Hi, also ich habe folgendes Problem.
Ich lasse eine De-Installation durchführen.
Dabei kann der Anwender entscheiden ob er seine angelegte Instanz des MS SQL Server löschen möchte.
Alles funktioniert wunderbar, nur diese eine Schritt nicht.
Ich lese die eingetragenen Werte unter "Software\Microsoft\Microsoft SQL Server" - "InstalledInstances" aus.
Dann kontrolliere ich welche Instanz die von dem Anwender verwendete Instanz ist und lasse diese aussen vor.
Dann will ich die Werte wieder abspeichern, und da passiert es...
Hier mal mein bisheriger Lösungsansatz:
Ich bekomme dann z.B. so etwas raus: MSSQLServer□□
Ich hoffe ich konnte euch mein Problem erläutern.
mfg Cre@or
Ich lasse eine De-Installation durchführen.
Dabei kann der Anwender entscheiden ob er seine angelegte Instanz des MS SQL Server löschen möchte.
Alles funktioniert wunderbar, nur diese eine Schritt nicht.
Ich lese die eingetragenen Werte unter "Software\Microsoft\Microsoft SQL Server" - "InstalledInstances" aus.
Dann kontrolliere ich welche Instanz die von dem Anwender verwendete Instanz ist und lasse diese aussen vor.
Dann will ich die Werte wieder abspeichern, und da passiert es...
Hier mal mein bisheriger Lösungsansatz:
Code:
aRegKey := TRegistry.Create; try with aRegKey do begin RootKey := HKEY_LOCAL_MACHINE; OpenKey(cSQL, False); iSize := aRegKey.GetDataSize('InstalledInstances'); if (iSize > 0) then begin SetLength(sTemp, iSize); aRegKey.ReadBinaryData('InstalledInstances', sTemp[1], iSize); bExit := False; repeat iPos := Pos(#0, sTemp); if iPos <> 0 then if sTemp[iPos + 1] <> #0 then sTemp[iPos] := #13 else bExit := True; until bExit; SQLInstanz.Text := sTemp; end; end; finally aRegKey.Free; end; NeuInstanz := TStringList.Create; for Filter := 0 to SQLInstanz.Count - 1 do begin if SQLInstanz[Filter] <> InstanzName then begin NeuInstanz.Add(SQLInstanz[Filter]); end; end; dwDataSize := Length(NeuInstanz.Text); RegCreateKeyEx(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Microsoft SQL Server', 0, '', REG_OPTION_NON_VOLATILE, KEY_WRITE, nil, aHandle, @dwDisposition); RegSetValueEx(aHandle, 'InstalledInstances', 0, REG_MULTI_SZ, PString(NeuInstanz.Text), dwDataSize);
Ich hoffe ich konnte euch mein Problem erläutern.
mfg Cre@or
Comment