Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using C++ to edit the registry

I have a limited c++ background and I would like to edit the registry. For example, I want to grab the value of HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun and check to see if 0x20 is in it, and then if it is, subtract 0x20 from it's value and write it back (and kill and restart explorer.exe but I can figure that out on my own).

How would you do it?

like image 514
Malfist Avatar asked May 14 '09 15:05

Malfist


4 Answers

  • Open the registry : RegOpenKeyEx

  • Query the value : RegQueryValueEx

    /* do something with value*/

  • Set the value back : RegSetValueEx

  • close the registry : RegCloseKey

like image 168
aJ. Avatar answered Oct 04 '22 06:10

aJ.


Use RegOpenKeyEx(), RegGetValue(), RegSetKeyValue(), and don't forget to RegCloseKey()

Here's a link to the reference: http://msdn.microsoft.com/en-us/library/ms724875(VS.85).aspx

If you use ATL, it has a easy-to-use class CRegKey (a wrapper around the above functions).

like image 45
azheglov Avatar answered Oct 04 '22 05:10

azheglov


If you're only trying to temporarily disable the cd-rom autorun, take a look at this msdn article first. Actually, look at it first before disabling it permanently anyway. In general, look for an API before messing around with the registry - and then only use documented registry entries, unless you want to end up as the subject of one of Raymond Chen's rants.

like image 33
Eclipse Avatar answered Oct 04 '22 05:10

Eclipse


well, Mike for your question ...

you can write it as follows ...

#include <STDLIB.H>

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

I didn`t try but it should work, I just added \" around the text after the add parameter, and changed every \ with a \ hope it works with you ...

like image 20
Sikas Avatar answered Oct 04 '22 06:10

Sikas