cft*_*mon 2 c++ windows registry
我试图从类型的Windows注册表中提取一个值REG_SZ,使用RegQueryValueEx,我得到的值除了它在每个字母之前充满了奇怪的"\ 000".为了告诉你我的意思在这里是一些图像:
我想要的价值(这是无线适配器的设备名称)

我得到的价值:

这是代码:
HKEY hlistkey = NULL;
HKEY hkey = NULL;
int dwIndex=0;
string devName = returndevName(); //return current selected device name using iphlpapi.h
WCHAR KeyNameBuf[512];
DWORD keyNameSizBuf = 512;
char buffer[512];
RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002bE10318}") ,0,KEY_READ, &hlistkey );
if(!hlistkey)
{
cout << "failed" << endl;
}
while(RegEnumKeyEx(hlistkey,dwIndex++,KeyNameBuf,&keyNameSizBuf,0,NULL,NULL,NULL) == ERROR_SUCCESS )
{
RegOpenKeyEx(hlistkey, KeyNameBuf, 0, KEY_READ | KEY_SET_VALUE, &hkey);
if(hkey)
{
keyNameSizBuf = 512;
if(RegQueryValueEx(hkey,TEXT("NetCfgInstanceId"), 0,NULL,(LPBYTE)buffer,&keyNameSizBuf ) == ERROR_SUCCESS )
{
if(strcmp(buffer,devName.c_str() ) ==0)
{
//set value here
}
}
RegCloseKey(hkey);
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于额外的空字符,比较buffer和devName不一样.如果我将缓冲区转换为字符串,我只需要一个"{"这是第一个值.devename我需要在注册表中获取值才能更改注册表中的"NetworkAddress".
| 归档时间: |
|
| 查看次数: |
8014 次 |
| 最近记录: |