PDA

View Full Version : کار با توابع رجیستری



taze kar
یک شنبه 10 آبان 1383, 09:36 صبح
سلام

میشه یه نمه در مورد این توابع ونهوه ی استفاده ازشون توضح بدین

ممنون
RegCloseKey
RegCreateKey
RegDeleteValue
RegOpenKey
RegQueryValueEx
RegSetValueEx :(

Aminm_666
یک شنبه 17 آبان 1383, 07:21 صبح
به مثال زیر توجه کنید:


HKEY hSoftwareKey = NULL;
HKEY hAppKey = NULL;

// open "HKEY_CURRENT_USER\software" key
if (RegOpenKey(HKEY_CURRENT_USER, _T("software"), &hSoftwareKey) == ERROR_SUCCESS)
{
// create/open "HKEY_CURRENT_USER\software\<company name>\<application name>" key
if (RegCreateKey(hSoftwareKey, _T("<company name>\\<application name>"),
&hAppKey) == ERROR_SUCCESS)
{
// write a DWORD value
DWORD dwValue = 1234;
RegSetValueEx(hAppKey, _T("DWORD_Entry"), NULL,
REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));

// write a String value
LPCTSTR lpszValue = _T("Register me!");
RegSetValueEx(hAppKey, _T("String_Entry"), NULL,
REG_SZ, (LPBYTE)lpszValue, (lstrlen(lpszValue)+1)*sizeof(TCHAR));

// write a Binary value
RECT rect = {0, 0, 10, 10};
RegSetValueEx(hAppKey, _T("Binary_Entry"), NULL,
REG_BINARY, (LPBYTE)&rect, sizeof(RECT));

// read a DWORD value from registery
DWORD dwType; // retrieves type of entry (DWORD, string, binary, ...)
DWORD dwData; // retrieves DWORD value
DWORD cbData = sizeof(DWORD);
LONG lResult = RegQueryValueEx(hAppKey, _T("DWORD_Entry"),
NULL, &dwType, (LPBYTE)&dwData, &cbData);
if (lResult == ERROR_SUCCESS) // read ok
{
ASSERT(dwType == REG_DWORD);
ASSERT(cbData == sizeof(DWORD));
// now dwData contains DWORD value
}

// read a string value from registery
lResult = RegQueryValueEx(hAppKey, _T("String_Entry"), NULL,
&dwType, NULL, &cbData); // first retrieves length of string in bytes
if (lResult == ERROR_SUCCESS) // read ok
{
ASSERT(dwType == REG_SZ);
LPTSTR lpszData = new TCHAR[cbData/sizeof(TCHAR)];
lResult = RegQueryValueEx(hAppKey, _T("String_Entry"), NULL,
&dwType, (LPBYTE)lpszData, &cbData);
// now lpszData contains string value
delete[] lpszData;
}

// read a binary value from registery
lResult = RegQueryValueEx(hAppKey, _T("Binary_Entry"), NULL,
&dwType, NULL, &cbData); // first retrieves length of data in bytes
if (lResult == ERROR_SUCCESS)
{
ASSERT(dwType == REG_BINARY);
LPBYTE lpData = new BYTE[cbData];
lResult = RegQueryValueEx(hAppKey, _T("Binary_Entry"), NULL,
&dwType, lpData, &cbData);
// now lpData contains Binary value
delete[] lpData;
}

// delete values
RegDeleteValue(hAppKey, _T("DWORD_Entry"));
RegDeleteValue(hAppKey, _T("String_Entry"));
RegDeleteValue(hAppKey, _T("Binary_Entry"));
}
}

if (hSoftwareKey != NULL)
RegCloseKey(hSoftwareKey);
if (hAppKey != NULL)
RegCloseKey(hAppKey);


به جای <company name> و <application name> میتوانید هر اسم دیگری جایگزین کنید. در واقع روش معمول برای برنامه‌ها این است که بعد از کلید software نام شرکت و بعد نام نرم‌افزار بصورت تو درد تو می‌آید.
در این مثال از هندل رزرو شده‌ی HKEY_CURRENT_USER وارد رجیستری شده‌ایم.
فکر می‌کنم مثال به اندازه کافی گویاست. اگر مشکلی بود باز در خدمتم.

taze kar
سه شنبه 19 آبان 1383, 08:25 صبح
mer 30