Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: bonmario - Gennaio 31, 2023, 10:34:31 am

Titolo: Limitazioni nel leggere il registro di windows?
Inserito da: bonmario - Gennaio 31, 2023, 10:34:31 am
Ciao a tutti,
da mesi ho questo codice funzionante:
Codice: [Seleziona]
          MyRegistry.RootKey:=HKEY_CURRENT_USER;
          if MyRegistry.OpenKeyReadOnly('\Software\Microsoft\Windows\CurrentVersion\Internet Settings') then begin

Ora ho la necessità di leggere un'altra impostazione, ma questo codice non entra nella "if":
Codice: [Seleziona]
        MyRegistry.RootKey:=HKEY_LOCAL_MACHINE;
        if MyRegistry.OpenKeyReadOnly('\SOFTWARE\Websense\Agent') then begin

Che voi sappiate, ci sono delle limitazioni?
Mi è venuto il dubbio, perché vorrei leggere da 2 "Chiavi radici" differenti: la prima è dell'utente, e la seconda della macchina.
Se anche fosse così, sarebbe comunque strano, visto che da "regedit" accedo tranquillamente a leggere quelle chiavi.

Grazie, Mario
Titolo: Re:Limitazioni nel leggere il registro di windows?
Inserito da: bonmario - Gennaio 31, 2023, 11:40:09 am
Mi rispondo da solo, sperando che questa cosa possa servire ad altri in futuro.

Il problemi dovrebbero essere 2: forzare la sola lettura, ed il fatto che da un applicativo 32 bit, cerco di leggere una parte di registro 64 bit (a dire la verità, questa seconda coso non l'ho ben capita ....) in ogni caso, il tutto si risolve modificando la "create", che nel precedente messaggio non avevo messo, perché non aveva nessun parametro.
Ecco il codice:
Codice: [Seleziona]
      MyRegistry:=TRegistry.Create(KEY_READ or KEY_WOW64_64KEY);  //ATTENZIONE: i parametri nella "Create", servono per:
      try                                                         //   - forzare la "sola lettura"
        MyRegistry.RootKey:=HKEY_LOCAL_MACHINE;                   //   - leggere i registro "64 bit" da un'applicazione 32 bit
        if MyRegistry.OpenKeyReadOnly('\SOFTWARE\Websense\Agent') then begin
Titolo: Re:Limitazioni nel leggere il registro di windows?
Inserito da: DragoRosso - Gennaio 31, 2023, 12:35:54 pm
Il comportamento del registro di sistema è cambiato con Windows 7, anche se ha subito comunque alcuni aggiustamenti con Windows 10.

Il più importante è la diversificazione tra accessi a 32 e 64 bit: con il nuovo standard si accede in maniera diversificata alla "HKLM/Software": app a 32 bit vengono dirottate alla sezione "HKLM/Software/WOW6432Node", app a 64 bit accedono alla sezione corretta "HKLM/Software".

Il resto del registro è inalterato come accesso.

Altre variazioni sono i descrittori di sicurezza rafforzati, per cui alcune chiavi diventano inaccessibili anche in lettura.

Ciao