日志含义RegSetValueEx写HKLM静默失败
RegSetValueEx silently fails to write to HKLM
我正试图从我的c++应用程序中编写HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
:
HKEY key;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\Microsoft\Windows\CurrentVersion\Run"), NULL, KEY_ALL_ACCESS, &key) == ERROR_SUCCESS){
if (RegSetValueEx(key, TEXT("lcr"), 0, REG_SZ, (const BYTE*)runcmd.c_str(), (runcmd.size()+1)*sizeof(wchar_t)) != ERROR_SUCCESS){
cout << "ERROR" ;
}else{
cout << "OK" << endl;
}
RegCloseKey(key);
}else{
cout << "ERROR" ;
}
但是它无声地失败了,什么也没发生!
我试着以正常用户的身份运行。以管理员身份运行。
有什么问题吗?
问题是您的应用程序受制于UAC注册表虚拟化。因为您没有在应用程序中包含清单,所以系统会进入XP(!)兼容模式。当你在HKLM下写入注册表的受限部分时,系统会将它们重定向到HKCU下的虚拟商店。
您应该向您的应用程序添加清单,以便您不再被虚拟化。如果您确实需要写入HKLM,那么您需要在清单中指定requireAdministrator
选项,以便您的应用程序以更高的权限执行。
也许你的下一步行动是花点时间阅读我上面链接的文档,并确保你完全理解UAC的所有含义。
相关文章:
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 如何使jse文件执行编码.exe并静默添加启动?Javascript将文件添加到启动?
- 如何将静默音频数据写入音频流
- 程序似乎在 for 循环 - C++后静默终止
- 标准目录中包含的文件可以静默替换现有宏
- 编译器可以静默地从 const 转换为 const 和,反之亦然吗?
- 如果 QApplication 执行延迟,QWebEngineView 在加载内容时会以静默方式失败
- 防止从false到指针的静默强制转换
- 为什么我的C++程序在使用 NULL 对象时静默退出
- 当ReadConsoleOutputCharacterW返回的字符串具有特定长度时,wcslen会静默退出
- 静默接受.pfx证书
- 火鸟/IBPP 插入以静默方式失败
- 程序以静默方式关闭
- Qt如何写信给HKLM
- MFC 应用程序以静默方式关闭
- 如何获取视觉C++警告 int 到字符串的静默转换
- OpenCV imread静默失败的原因
- 正在将DWORD从HKCU复制到HKLM
- 创建静默CLI选项的最佳做法
- 日志含义RegSetValueEx写HKLM静默失败