|
|
|
发新文章 |
|
|
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 // 键的最近写入时间的地址
);
|