RegSetValueEx与RRF_RT_REG_SZ使REG_EXPAND_SZ在注册表中
RegSetValueEx with RRF_RT_REG_SZ makes REG_EXPAND_SZ in the registry?
标题几乎说明了一切,当我尝试使用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
标志的值相同。
相关文章:
- 可能吗?std::vector<double> my_vec(sz);已分配但未初始化或填充
- 避免在Mac OSX -reg中进行sigpipe
- 将文件的数据从服务器返回到客户端 - reg
- Reg Free进程外COM服务器事件
- C++将.reg文件提取到注册表
- 与jnpout32pkg/jnpout32 reg的并行端口通信
- reg.exe在由WinExec()执行后仍保留在进程列表中
- Reg 序列化和反序列化在提升
- Reg Sqlite binding
- Reg 在 U-Boot 上执行 C++ 个应用程序(无操作系统)
- Reg函数指针
- 如何在 boost::u32regex & reg 中打印值
- cash-reg将每行中的单个单词加载到不同的结构成员中
- sz和pwsz前缀在WinAPI
- 如何在c++builder中将注册表导出到*.reg文件
- Reg 文件 - "dword"转换为什么?