![]() |
Registry Lesen und Schreiben Win 7 64 Bit
Hallo
ich sitzt jetzt schon seid 2 Wochen daran ein Projekt auch 64bit Fähig zu machen. Mein Problem ist das die Daten nicht aus der Registry gelesen werden. mein Code ist
Code:
2. gibt es eine Möglichkeit das beim schreiben in die Registry die Admin-Rechte vom Programm zugewiesen werden?
begin
with TRegistry.Create do begin try RootKey := HKEY_LOCAL_MACHINE; if OpenKey('\SOFTWARE\Moeller Computer\MED Base\', false) then begin MyUser := ReadString('Users'); // Zeilen werden übersprungen MyPassword := ReadString('Password'); MyDatabasename := ReadString('Database'); Myservername := ReadString('Server'); MyWorkstationName := ReadString('Workstation'); CloseKey; end; // wird wieder bearbeitet finally Free; end; end; with TRegistry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY) do begin try RootKey := HKEY_LOCAL_MACHINE; if OpenKey ('\Software\Moeller Computer\MED Base\', false) then begin MyUser := ReadString('Users'); MyPassword := ReadString('Password'); MyDatabasename := ReadString('Database'); Myservername := ReadString('Server'); MyWorkstationName := ReadString('Workstation'); CloseKey; end; finally free; end; end; Verbindung_Herstellen; end; Mcop2001de |
AW: Registry Lesen und Schreiben Win 7 64 Bit
Da du ja nur lesend zugreifen willst, würde ja ein Nur-Lesen Zugriff ausreichen: Regitry.OpenKeyReadOnly()
|
AW: Registry Lesen und Schreiben Win 7 64 Bit
Oder gleich mit TRegistry.Create(KEY_READ) instanzieren.
|
AW: Registry Lesen und Schreiben Win 7 64 Bit
Danke für die schnelle Antwort
bei beiden Varianten werden die Zeilen die ich im Code mit dem Text makiert habe überspungen. ich habe auch in der Registry den Pfad überprüft der Stimmt HKEY_LOCAL_MACHINE\Software\Wow6432Node\Moeller Computer\MED Base. Wenn ich in einzelschritten des Programm ablaufen lasse werden die Zeilen 8-13 übersprungen. was kann das sein? |
AW: Registry Lesen und Schreiben Win 7 64 Bit
Und bei KEY_READ OR KEY_WOW64_64KEY?
|
AW: Registry Lesen und Schreiben Win 7 64 Bit
Probier' mal so in Verbindung mit #3.
Delphi-Quellcode:
function IsWin7: boolean;
var osVerInfo: TOSVersionInfo; majorVersion, minorVersion: integer; begin Result:= false; osVerInfo.dwOSVersionInfoSize:= SizeOf(TOSVersionInfo); if GetVersionEx(osVerInfo) then begin minorVersion:= osVerInfo.dwMinorVersion; majorVersion:= osVerInfo.dwMajorVersion; if osVerInfo.dwPlatFormId = VER_PLATForm_WIN32_NT then if (majorVersion = 6) and (minorVersion = 1) then Result:= true; end; end; function IsWow64: boolean; type TIsWow64Process = function(Handle: Windows.THandle; var Res: Windows.BOOL): Windows.BOOL; stdcall; var IsWow64Result: Windows.BOOL; IsWow64Process: TIsWow64Process; begin Result:= False; if IsWin7 then begin IsWow64Process := Windows.GetProcAddress(Windows.GetModuleHandle('kernel32'), 'IsWow64Process'); if Assigned(IsWow64Process) then try IsWow64Process(Windows.GetCurrentProcess, IsWow64Result); Result:= IsWow64Result; except Result:= False; end; end; end; function GetRegPath: string; var Substr: string; begin if IsWow64 then Substr:= 'Wow6432Node\' else Substr:= ''; Result:= 'SOFTWARE\' + Substr + 'Moeller Computer\MED Base\' end; |
AW: Registry Lesen und Schreiben Win 7 64 Bit
Danke Bjoerk
jetzt hats geklappt. gibt es den auch eine Möglichkeit in die Registry zu schreiben ohne das der User Adminrechte besitzt? Mcop2001de |
AW: Registry Lesen und Schreiben Win 7 64 Bit
Natürlich, aber eben nicht in jeden Zweig. HKLM ist ja benutzerübergreifend, da darf mit Recht nicht jeder einfach so schreiben. Normalerweise werden dort Standardwerte im Rahmen eines Setups hinterlegt, welches ja in der Regel mit Adminrechten ausgeführt wird. Benutzerbezogene Dinge können ja dann unter HKCU hinterlegt werden, dort sollte der aktuelle Benutzer Schreibrechte besitzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz