标题说明了一切,当我尝试使用RegSetValueEx来创建一个REG_SZ大小条目时,当我查看注册表时,就会得到一个REG_EXPAND_SZ。
这是我正在使用的代码
const char REG_KEY_PATH[] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
const char REG_VALUE_NAME[] = "Scroff";
// Get where the app lives
char appLoc[MAX_PATH];
GetModuleFileNameA(NULL, appLoc, MAX_PATH);
// Create the key value
HKEY regKey = 0;
RegCreateKeyExA(HKEY_LOCAL_MACHINE, REG_KEY_PATH, 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WRITE | KEY_WOW64_64KEY,
NULL, ®Key, NULL);
RegSetValueExA(regKey, REG_VALUE_NAME, 0, RRF_RT_REG_SZ, (unsigned char*)appLoc, strlen(appLoc));代码可以工作,但是不是具有REG_SZ类型的注册表,而是REG_EXPAND_SZ。为什么会这样,我该怎么解决呢?
我在Windows 10上运行,使用VS 2015 Enterprise。
谢谢。
发布于 2016-06-27 05:27:57
您需要传递REG_SZ标志作为RegSetValueEx()的第四个参数来创建REG_SZ值。RRF_RT_XXX标志仅在RegGetValue()中有效。
您的代码正在创建一个REG_EXPAND_SZ值,因为RRF_RT_REG_SZ标志的值为2,这恰好与REG_EXPAND_SZ标志的值相同。
https://stackoverflow.com/questions/38046152
复制相似问题