|
|
|
發新文章 |
|
|
HKEY hKey;  RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\ODBC\\ODBC.INI",0,KEY_READ,&hKey);
DWORD dwSubKeyCount,dwMaxSubKeyNameLength;
RegQueryInfoKey(hKey,NULL,NULL,NULL,&dwSubKeyCount,&dwMaxSubKeyNameLength,NULL,NULL,NULL,NULL,NULL,NULL);
long index = 0;

char* szSubKeyName = new char[dwMaxSubKeyNameLength+1];
DWORD dwSubKeyName;
for (index=0;index<(long)dwSubKeyCount;index++)
 {
RegEnumKeyEx(hKey,index,szSubKeyName,&dwSubKeyName,NULL,NULL,NULL,NULL);
}
RegCloseKey(hKey);

RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources",0,KEY_READ,&hKey);
DWORD dwValueCount,dwMaxValueNameLength;
RegQueryInfoKey(hKey,NULL,NULL,NULL,NULL,NULL,NULL,&dwValueCount,&dwMaxValueNameLength,NULL,NULL,NULL);
char* szValueName = new char[dwMaxValueNameLength+1];
DWORD dwValueName;

for (index=0;index<(long)dwValueCount;index++)
 {
RegEnumValue(hKey,index,szValueName,&dwValueName,NULL,NULL,NULL,NULL);
}

RegCloseKey(hKey);
hKey
當前打開鍵的句柄或下列預定義保留的句柄值:
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

samDesired
制定一個訪問標記以描述訪問新鍵的安全性
此參數可以是下列值的一個聯合
KEY_ALL_ACCESS
KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, 和 KEY_SET_VALUE 訪問的聯合.
KEY_CREATE_LINK
允許創建嚴格符號的鏈接.
KEY_CREATE_SUB_KEY
允許創建子鍵.
KEY_ENUMERATE_SUB_KEYS
允許枚舉子鍵.
KEY_EXECUTE
允許讀訪問.
KEY_NOTIFY
允許改變通知.
KEY_QUERY_VALUE
允許查詢子鍵的數據.
KEY_READ
KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, 和 KEY_NOTIFY 訪問的聯合.
KEY_SET_VALUE
允許設置子鍵的數據.
KEY_WRITE
KEY_SET_VALUE 和 KEY_CREATE_SUB_KEY 訪問的聯合.


LONG RegOpenKeyEx(
HKEY hKey, // 待打開的鍵的句柄
LPCTSTR lpSubKey, // 待打開的子鍵名稱的地址
DWORD ulOptions, // 保留的,必須為0.
REGSAM samDesired, // 安全訪問標記
PHKEY phkResult // 待打開的鍵的句柄的地址
);

LONG RegQueryInfoKey(
HKEY hKey, // 待查詢的鍵的句柄
LPTSTR lpClass, // 類字符串緩沖器地址
LPDWORD lpcbClass, // 類字符串緩沖器大小的地址
LPDWORD lpReserved, // 保留的,必須為 NULL.
LPDWORD lpcSubKeys, // 子鍵數目緩沖器的地址
LPDWORD lpcbMaxSubKeyLen, // 最長的子鍵名稱長度緩沖器的地址
LPDWORD lpcbMaxClassLen, // 最長的類字符串長度緩沖器的地址
LPDWORD lpcValues, // 值項數目緩沖器的地址
LPDWORD lpcbMaxValueNameLen, // 最長的值名稱長度緩沖器的地址
LPDWORD lpcbMaxValueLen, // 最長的值數據長度緩沖器的地址
LPDWORD lpcbSecurityDescriptor, // 安全描述符長度緩沖器的地址
PFILETIME lpftLastWriteTime // 最近寫入時間緩沖器的地址
);

LONG RegEnumKeyEx(
HKEY hKey, // 待枚舉的鍵的句柄
DWORD dwIndex, // 待枚舉的子鍵的索引
LPTSTR lpName, // 子鍵名稱緩沖器的地址
LPDWORD lpcbName, // 子鍵緩沖器大小的地址
LPDWORD lpReserved, // 保留的,必須為 NULL.
LPTSTR lpClass, // 類字符串緩沖器的地址
LPDWORD lpcbClass, // 類緩沖器大小的地址
PFILETIME lpftLastWriteTime // 鍵的最近寫入時間的地址
);
|