标题几乎说明了一切,当我尝试使用 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。
谢谢。
最佳答案
您需要将 REG_SZ
标志作为 RegSetValueEx()
的第四个参数传递,以创建一个 REG_SZ 值。 RRF_RT_XXX
标志仅对 RegGetValue()
有效。
您的代码正在创建一个 REG_EXPAND_SZ 值,因为 RRF_RT_REG_SZ
标志的值为 2,恰好与 REG_EXPAND_SZ
的值相同旗帜。
关于c++ - 带有 RRF_RT_REG_SZ 的 RegSetValueEx 在注册表中生成 REG_EXPAND_SZ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38046152/