[FAQ]VC读取数据源列表和驱动程序列表

读注册表   
   
数据源信息存放在  
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI   
    
驱动程序信息存放在   
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI  

附:

None.gif     HKEY hKey;
None.gif    RegOpenKeyEx(HKEY_LOCAL_MACHINE,
" SOFTWARE\\ODBC\\ODBC.INI " , 0 ,KEY_READ, & hKey);
None.gif    
None.gif    DWORD dwSubKeyCount,dwMaxSubKeyNameLength;
None.gif    RegQueryInfoKey(hKey,NULL,NULL,NULL,
& dwSubKeyCount, & dwMaxSubKeyNameLength,NULL,NULL,NULL,NULL,NULL,NULL);
None.gif    
None.gif    
long  index  =   0 ;
None.gif
None.gif    
char *  szSubKeyName  =   new   char [dwMaxSubKeyNameLength + 1 ];
None.gif    DWORD dwSubKeyName;
None.gif    
for  (index = 0 ;index < ( long )dwSubKeyCount;index ++ )
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        RegEnumKeyEx(hKey,index,szSubKeyName,
&dwSubKeyName,NULL,NULL,NULL,NULL);
ExpandedBlockEnd.gif    }

None.gif    RegCloseKey(hKey);
None.gif
None.gif    RegOpenKeyEx(HKEY_LOCAL_MACHINE,
" SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources " , 0 ,KEY_READ, & hKey);
None.gif    
None.gif    DWORD dwValueCount,dwMaxValueNameLength;
None.gif    RegQueryInfoKey(hKey,NULL,NULL,NULL,NULL,NULL,NULL,
& dwValueCount, & dwMaxValueNameLength,NULL,NULL,NULL);    
None.gif    
None.gif    
char *  szValueName  =   new   char [dwMaxValueNameLength + 1 ];
None.gif    DWORD dwValueName;
None.gif
None.gif    
for  (index = 0 ;index < ( long )dwValueCount;index ++ )
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        RegEnumValue(hKey,index,szValueName,
&dwValueName,NULL,NULL,NULL,NULL);
ExpandedBlockEnd.gif    }

None.gif
None.gif    RegCloseKey(hKey);


None.gif     hKey 
None.gif    当前打开键的句柄或下列预定义保留的句柄值: 
None.gif    HKEY_CLASSES_ROOT
None.gif    HKEY_CURRENT_CONFIG
None.gif    HKEY_CURRENT_USER
None.gif    HKEY_LOCAL_MACHINE
None.gif    HKEY_USERS
None.gif
None.gif    samDesired 
None.gif    制定一个访问标记以描述访问新键的安全性
None.gif    此参数可以是下列值的一个联合 
None.gif    KEY_ALL_ACCESS
None.gif    KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, 和 KEY_SET_VALUE 访问的联合. 
None.gif    KEY_CREATE_LINK
None.gif    允许创建严格符号的链接. 
None.gif    KEY_CREATE_SUB_KEY
None.gif    允许创建子键. 
None.gif    KEY_ENUMERATE_SUB_KEYS
None.gif    允许枚举子键. 
None.gif    KEY_EXECUTE
None.gif    允许读访问. 
None.gif    KEY_NOTIFY
None.gif    允许改变通知. 
None.gif    KEY_QUERY_VALUE
None.gif    允许查询子键的数据. 
None.gif    KEY_READ
None.gif    KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, 和 KEY_NOTIFY 访问的联合. 
None.gif    KEY_SET_VALUE
None.gif    允许设置子键的数据. 
None.gif    KEY_WRITE
None.gif    KEY_SET_VALUE 和 KEY_CREATE_SUB_KEY 访问的联合. 
None.gif
None.gif
None.gif    LONG RegOpenKeyEx(
None.gif    HKEY hKey,                        
//  待打开的键的句柄
None.gif
    LPCTSTR lpSubKey,                 //  待打开的子键名称的地址
None.gif
    DWORD ulOptions,                 //  保留的,必须为0. 
None.gif
    REGSAM samDesired,                 //  安全访问标记
None.gif
    PHKEY phkResult                     //  待打开的键的句柄的地址
None.gif
    );
None.gif
None.gif    LONG RegQueryInfoKey(
None.gif    HKEY hKey,                        
//  待查询的键的句柄
None.gif
    LPTSTR lpClass,                     //  类字符串缓冲器地址
None.gif
    LPDWORD lpcbClass,                 //  类字符串缓冲器大小的地址
None.gif
    LPDWORD lpReserved,                 //  保留的,必须为 NULL.
None.gif
    LPDWORD lpcSubKeys,                 //  子键数目缓冲器的地址
None.gif
    LPDWORD lpcbMaxSubKeyLen,         //  最长的子键名称长度缓冲器的地址
None.gif
    LPDWORD lpcbMaxClassLen,         //  最长的类字符串长度缓冲器的地址
None.gif
    LPDWORD lpcValues,                 //  值项数目缓冲器的地址
None.gif
    LPDWORD lpcbMaxValueNameLen,     //  最长的值名称长度缓冲器的地址
None.gif
    LPDWORD lpcbMaxValueLen,         //  最长的值数据长度缓冲器的地址
None.gif
    LPDWORD lpcbSecurityDescriptor,     //  安全描述符长度缓冲器的地址
None.gif
    PFILETIME lpftLastWriteTime         //  最近写入时间缓冲器的地址
None.gif
    );
None.gif
None.gif    LONG RegEnumKeyEx(
None.gif    HKEY hKey,                        
//  待枚举的键的句柄
None.gif
    DWORD dwIndex,                     //  待枚举的子键的索引
None.gif
    LPTSTR lpName,                     //  子键名称缓冲器的地址
None.gif
    LPDWORD lpcbName,                 //  子键缓冲器大小的地址
None.gif
    LPDWORD lpReserved,                 //  保留的,必须为 NULL.
None.gif
    LPTSTR lpClass,                     //  类字符串缓冲器的地址
None.gif
    LPDWORD lpcbClass,                 //  类缓冲器大小的地址
None.gif
    PFILETIME lpftLastWriteTime         //  键的最近写入时间的地址
None.gif
    );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值