2010-12-19 53 views
2

我试图检索一个键的值,但我只得到值的第一个字符.. 任何人都可以帮忙吗?c + +获取注册表项只返回一个字符

我的代码:

void dealWithRegistry() 
{ 
    HKEY regkey1; 
    char data[100]; 
    DWORD datasize = sizeof (data)/sizeof (char); 
    LONG rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_READ, &regkey1); 
    if (rc != ERROR_SUCCESS) 
    { 
     cout << "there was a problem openning" << endl; 
    } 
    else 
    { 
     rc = RegGetValue (regkey1, NULL, L"AppData", RRF_RT_REG_SZ, NULL, (void*) data, &datasize); 
     if (rc != ERROR_SUCCESS) 
     { 
      cout << data << endl; 
      cout << "there was a problem getting the value" << endl; 
     } 
    } 
    cout << data << endl; 

} 

回答

5

它可能返回Unicode数据,你只打印第一个字符。对此的快速测试是将呼叫更改为RegGetValueA

+0

工程就像一个魅力:)谢谢。 – Tom 2010-12-19 13:30:12

+1

@Tom。我很高兴你能工作。另一种可能的解决方案是使用TCHAR代替char,然后根据构建属性(Unicode或ANSI)具有适当的类型(WCHAR或char)。 – 2010-12-19 13:36:27

+0

是的,我正在阅读有关它,真正的感谢队友! – Tom 2010-12-19 13:45:55