|
Memo2 부분에는 하위 폴더가 보여지고 Label34부분에는 데이터값이 보여집니다.
어찌저찌 찾아서 수정을 해서 되긴 했는데.. 뭔가가 -_-;; 원래는 while 문으로 하는건데
왜 전 while문으로 해서 돌리면 제대로 동작을 안하는지 모르겠군여 ㅡㅡㅋ;;
원본 소스도 올려드립니다. 데브피아 펌이구여 윗부분은 제가 수정한거고여
아래쪽은 원본입니다.
제가 수정한게 많이 어설프니깐 정 필요하신분만 가져다 쓰시는게 좋으실듯 하구여;;
다른분께서 원본을 수정해서 올려주셨으면 하네요
이젠 레지스트리값 가지고 비교해서 원하는 랜카드를 쓸수 있도록 해야겠군여;;
----------------------------------------------------------------------------------------------
int i;
LONG Result;
LONG Result2;
HKEY hkey;
DWORD dwType;
DWORD dwBytes=100;
char buffer[100];
int index=0;
char Address[] = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards";
char Name[] = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1- 08002BE10318}\\{AA30449A-C71A-4EC7-B48D-413F26A95A0F}\\Connection";
RegCreateKeyEx( HKEY_LOCAL_MACHINE, Address, NULL, NULL, NULL, KEY_ENUMERATE_SUB_KEYS, NULL, &hkey ,NULL);
for(i=0;i<sizeof(buffer);i++)
{
unsigned long subkeysize=sizeof buffer;
Result=RegEnumKeyEx(hkey, index++, buffer, &subkeysize, NULL, NULL, NULL, NULL);
if (Result == ERROR_SUCCESS)
{
//Label31->Caption=buffer;
Memo2->Lines->Add(buffer);
}
else
{
Label31->Caption="Register Read Error";
}
}
// open Regstry Key
RegOpenKeyEx(HKEY_LOCAL_MACHINE, Name, 0, KEY_ALL_ACCESS, &hkey);
Result2=RegQueryValueEx(hkey, "name", 0, &dwType, (LPBYTE)buffer, &dwBytes);
// Read Regstry Key
if(Result2 == ERROR_SUCCESS)
{
Label34->Caption=buffer;
}
else
{
Label34->Caption="Register Read Error";
}
RegCloseKey(hkey);
---------------------------------------------------------------------------------------------
#define MAX_KEY_SIZE 255
#define MAX_BUFFER_SIZE 1024
CRegKey subKey;
CRegKey subKey2;
CString strWebkey="Software\\"; //서브키 경로
int index = 0;
long retVal;
int index2 = 0;
long retVal2;
TCHAR subKeyName[MAX_KEY_SIZE];
ULONG bufferSize = MAX_KEY_SIZE;
TCHAR keyValBuffer[MAX_BUFFER_SIZE];
ULONG keyBuffSize = MAX_BUFFER_SIZE;
ZeroMemory(keyValBuffer, keyBuffSize);
if(subKey.Open(HKEY_CURRENT_USER, strWebkey) == ERROR_SUCCESS)
{
retVal = RegEnumKeyEx(subKey.m_hKey, index, subKeyName, &bufferSize, NULL, NULL, NULL, NULL);
while(retVal != ERROR_NO_MORE_ITEMS)
{
AfxMessageBox(subKeyName);
ZeroMemory(keyValBuffer, keyBuffSize);
index2=0;
if(subKey2.Open(HKEY_CURRENT_USER, strWebkey+subKeyName) == ERROR_SUCCESS)
{
retVal2 = RegEnumValue(subKey2.m_hKey, index2, subKeyName, &bufferSize, NULL, NULL, NULL, NULL);
while (retVal2 != ERROR_NO_MORE_ITEMS)
{
AfxMessageBox(subKeyName);
index2++;
ZeroMemory(keyValBuffer, keyBuffSize);
keyBuffSize = MAX_BUFFER_SIZE;
ZeroMemory(subKeyName, MAX_KEY_SIZE);
bufferSize = MAX_KEY_SIZE;
retVal2 = RegEnumValue(subKey2.m_hKey, index2, subKeyName, &bufferSize, NULL, NULL, NULL, NULL);
}
}
subKey2.Close();
index++;
ZeroMemory(keyValBuffer, keyBuffSize);
keyBuffSize = MAX_BUFFER_SIZE;
ZeroMemory(subKeyName, MAX_KEY_SIZE);
bufferSize = MAX_KEY_SIZE;
retVal = RegEnumKeyEx(subKey.m_hKey, index, subKeyName, &bufferSize, NULL, NULL, NULL, NULL);
}
subKey.Close();
}
----------------------------------------------------------------------------------------------
키를 열거하는 함수입니다.
LONG RegEnumKey(
HKEY hKey, // handle to key to query
DWORD dwIndex, // index of subkey to query
LPTSTR lpName, // buffer for subkey name
DWORD cbName // size of subkey name buffer
);
값을 열거하는 함수입니다.
LONG RegEnumValue(
HKEY hKey, // handle to key to query
DWORD dwIndex, // index of value to query
LPTSTR lpValueName, // value buffer
LPDWORD lpcValueName, // size of value buffer
LPDWORD lpReserved, // reserved
LPDWORD lpType, // type buffer
LPBYTE lpData, // data buffer
LPDWORD lpcbData // size of data buffer
);
|