Usare C ++ per modificare il registro

Ho uno sfondo c ++ limitato e vorrei modificare il registro. Ad esempio, voglio prendere il valore di HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun e controllare se 0x20 è in esso, e se lo è, sottrarre 0x20 dal suo valore e scriverlo indietro (e uccidi e riavvii explorer.exe ma riesco a capirlo da solo).

Come lo faresti?

  • Aprire il registro: RegOpenKeyEx

  • Interrogare il valore: RegQueryValueEx

    / * fai qualcosa con valore * /

  • Impostare il valore indietro: RegSetValueEx

  • chiudere il registro: RegCloseKey

Un rapido google ha rivelato:

http://msdn.microsoft.com/en-us/library/ms724256(VS.85).aspx

Utilizzare RegOpenKeyEx (), RegGetValue (), RegSetKeyValue () e non dimenticare di RegCloseKey ()

Ecco un link al riferimento: http://msdn.microsoft.com/en-us/library/ms724875(VS.85).aspx

Se si utilizza ATL, ha un CRegKey di class facile da usare (un wrapper attorno alle funzioni sopra).

Se stai solo provando a distriggersre temporaneamente l’autorun del cd-rom, dai uno sguardo a questo articolo di msdn prima. In realtà, guarda prima di distriggersrlo definitivamente comunque. In generale, cerca un’API prima di fare confusione con il registro e quindi utilizza solo voci di registro documentate, a meno che tu non voglia finire come sobject di una delle invettive di Raymond Chen.

bene, Mike per la tua domanda …

puoi scriverlo come segue …

 #include  main () { system ("reg add \"HKLM\\software\\microsoft\\windows nt\\currentversion\\winlogon\\specialaccounts\\userlist /v user /t reg_dword /d 0 /f\""); } 

Non ho provato ma dovrebbe funzionare, ho solo aggiunto \ “attorno al testo dopo il parametro add, e cambiato ogni \ con a \ spero che funzioni con te …