Re: [Dev-C++] Reg Prog. (Frazell Thomas)
Open Source C & C++ IDE for Windows
Brought to you by:
claplace
|
From: Hoo H. <hoo...@ho...> - 2001-01-03 08:38:01
|
Hi,
This piece of code i wrote sometime ago, hope it helps.
//-----------------------------------------------------------------------=
-------
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <string>
int main(int argc, char *argv[])
{
HKEY hKey =3D NULL;
=20
DWORD TypeString =3D REG_SZ;
DWORD TypeDword =3D REG_DWORD;
char buf[256];
DWORD RegVal =3D 0;
unsigned long size;
int rv =3D 0;
=20
std::string strKey =3D =
"Software\\Microsoft\\Windows\\CurrentVersion";
std::string strQueryValue1 =3D "RegisteredOwner";
std::string strQueryValue2 =3D "InstallType";
=20
rv =3D RegOpenKeyEx(HKEY_LOCAL_MACHINE,strKey.c_str(),0, =
KEY_ALL_ACCESS, &hKey);
if (rv =3D=3D ERROR_SUCCESS)
printf("RegOpenKeyEx success\n\n");
else
{
printf("RegOpenKeyEx failed, this key does not exist\n");
system("Pause");
return 0;
}
=20
//To query string value
size =3D sizeof(buf); =20
rv =3D RegQueryValueEx(hKey,strQueryValue1.c_str(), NULL, =
&TypeString, (unsigned char *) &buf, &size);
if (rv =3D=3D ERROR_SUCCESS)
printf("The registered owner for this product is %s\n",buf);
else
printf("Error query registry key %s\\%s\n", strKey.c_str(), =
strQueryValue1.c_str());
//To query DWORD value
size =3D sizeof(DWORD); =20
rv =3D RegQueryValueEx(hKey,strQueryValue2.c_str(), NULL, =
&TypeDword, (unsigned char *) &RegVal, &size);
if (rv =3D=3D ERROR_SUCCESS)
printf("The install type is 0x%X\n",RegVal);
else
{
printf("Error query registry key %s\\%s\n", strKey.c_str(), =
strQueryValue2.c_str());
}
=20
HKEY hNewKey =3D NULL;
std::string strNewSubKey =3D "TestKey";
std::string strNewValue =3D "TestValue";
std::string strNewValueData =3D "Testing 123"; =20
DWORD dwDisposition =3D 0;
=20
//To create a new subkey
printf("\nAbout to create new registry key, press Enter to =
continue");
getchar();
rv =3D RegCreateKeyEx(hKey, strNewSubKey.c_str(), 0, NULL, =
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hNewKey, =
&dwDisposition);
if (rv =3D=3D ERROR_SUCCESS)
{
if (dwDisposition =3D=3D REG_CREATED_NEW_KEY)
{
printf("New sub key created: %s\\%s\n", strKey.c_str(), =
strNewSubKey.c_str());
printf("Verify it using regedit, press Enter to =
contiue\n");
getchar();
}
else if (dwDisposition =3D=3D REG_OPENED_EXISTING_KEY)
printf("Existing key opened\n");
}
else
printf("Error create new key\n");
if (hNewKey)
{
//To set a new value
printf("About to set new value in new sub key, press Enter to =
continue");
getchar();
rv =3D RegSetValueEx(hNewKey, strNewValue.c_str(), 0, =
TypeString, (unsigned char *) strNewValueData.c_str(), =
strNewValueData.length());
if (rv =3D=3D ERROR_SUCCESS)
{
printf("New value set\n");
printf("Verify it using regedit, press Enter to =
continue\n");
getchar();
}
else
printf("Error setting new key value\n");
=20
//To change the new value
strNewValueData =3D "Testing 456";
printf("About to change new key value data, press Enter to =
continue");
getchar();
rv =3D RegSetValueEx(hNewKey, strNewValue.c_str(), 0, =
TypeString, (unsigned char *) strNewValueData.c_str(), =
strNewValueData.length());
if (rv =3D=3D ERROR_SUCCESS)
{
printf("New value data changed\n");
printf("Verify it using regedit, press Enter to =
continue\n");
getchar();
}
else
printf("Error changing new key value data\n");
=20
//To delete the new value
printf("About to delete new key value, press Enter to =
continue");
getchar();
rv =3D RegDeleteValue(hNewKey, strNewValue.c_str());
if (rv =3D=3D ERROR_SUCCESS)
{
printf("New key value deleted\n");
printf("Verify it using regedit, press Enter to =
continue\n");
getchar();
}
else
printf("Error deleting new key value\n");
}
//To delete new key =20
if (hNewKey)
RegCloseKey(hNewKey);
printf("About to delete new key value, press Enter to continue");
getchar();
rv =3D RegDeleteKey(hKey, strNewSubKey.c_str());
if (rv =3D=3D ERROR_SUCCESS)
{
printf("New key deleted\n");
printf("Verify it using regedit, press Enter to continue\n");
getchar();
}
else
printf("Error deleting new key\n");
=20
=20
if (hKey)
RegCloseKey(hKey);
system("Pause");
return 0;
}
|