gpt4 book ai didi

c++ RegSetValueEx 在注册表中只设置一个字符值

转载 作者:可可西里 更新时间:2023-11-01 09:41:45 26 4
gpt4 key购买 nike

我正在对数据进行 (char *) 转换,但我在注册表中只获得了一个 char 值。如果我不使用转换 msvc 2010 告诉我参数类型 LPCTSTR 与 const char * 不兼容。

谁能帮帮我?

HKEY hKey;
LPCTSTR sk = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");

LONG openRes = RegOpenKeyEx(HKEY_CURRENT_USER, sk, 0, KEY_ALL_ACCESS , &hKey);

if (openRes==ERROR_SUCCESS) {
printf("Success opening key.");
} else {
printf("Error opening key.");
}

LPCTSTR value = TEXT("SomeKey");
LPCTSTR data = L"TestData\0";

LONG setRes = RegSetValueEx (hKey, value, 0, REG_SZ, (LPBYTE)data, strlen(data)+1);

if (setRes == ERROR_SUCCESS) {
printf("Success writing to Registry.");
} else {
printf("Error writing to Registry.");
}
cout << setRes << endl;

LONG closeOut = RegCloseKey(hKey);
if (closeOut == ERROR_SUCCESS) {
printf("Success closing key.");
} else {
printf("Error closing key.");
}

最佳答案

strlen(data) 可能返回值 1,因为 strlen 需要一个 char* 并且 L"TestData\0" 很宽。使用 TEXT("TestData\0") 并调用 _tcslen(data)
请注意,RegSetValueEx 需要数据的大小,因此请使用 _tcslen(data) * sizeof(TCHAR)

关于c++ RegSetValueEx 在注册表中只设置一个字符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4484962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com