gpt4 book ai didi

c++ - RegSetValueEx 静默无法写入 HKLM

转载 作者:行者123 更新时间:2023-11-28 02:24:15 26 4
gpt4 key购买 nike

我正在尝试从我的 C++ 应用程序中写入 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,如下所示:

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 registry virtualization .因为您没有在您的应用程序中包含 list ,所以系统进入 XP (!) 兼容模式。当您在 HKLM 下写入注册表的受限部分时,系统会将它们重定向到 HKCU 下所谓的虚拟商店。

您应该向您的应用程序添加一个 list ,这样您就不再被虚拟化了。如果您确实需要写入 HKLM,则需要在 list 中指定 requireAdministrator 选项,以便您的应用程序以提升的权限执行。

您的下一步行动可能是花一些时间阅读我上面链接的文档,并确保您完全理解 UAC 的所有含义。

关于c++ - RegSetValueEx 静默无法写入 HKLM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31265939/

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