【发布时间】:2018-06-22 05:04:29
【问题描述】:
我尝试在 Windows 注册表中创建一个键,但出现此错误:
5 访问被拒绝。
sn-p的代码是这样的:
HKEY hKey;
LPCTSTR sk = TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\notepad.exe"); //notepad.exe is the key I want to create
//note: if I change the first parameter to KEY_CURRENT_USER, the key will be created
LONG createResKey = RegCreateKeyEx(HKEY_LOCAL_MACHINE, sk, 0, NULL, REG_OPTION_BACKUP_RESTORE, KEY_ALL_ACCESS, NULL, &hKey, NULL);
if (createResKey == ERROR_SUCCESS) {
qDebug() << "Success creating key.";
}
else {
qDebug() << "Error creating key.";
showErrorText(createResKey);
}
也许是因为我的程序没有管理员权限,我尽力在网上做研究并试图获得管理员权限,但失败了。我现在很困惑如何解决这个问题。
编辑:我想要实现什么?
我试图通过修改注册表来阻止某些特定的应用程序启动。例如,如果我想阻止记事本,首先我必须创建一个“notepad.exe”键,然后为其设置一个字符串值“debugger”并将其值设置为“debugfile.exe”。所以记事本将被阻止启动。
【问题讨论】:
-
您是否考虑在资源管理器中右键单击 EXE 并选择“以管理员身份运行”?
-
@selbie 是的,我确实尝试过,但不知何故它仍然说“访问被拒绝”。此外,我希望它以编程方式获得管理员权限
-
您确定需要管理员权限吗?你不能避开他们吗?然后生活会更轻松(因为您只需在操作系统轻松提供的内容上构建)
-
@BasileStarynkevitch 实际上不太确定。我只需要弄清楚为什么它说“访问被拒绝”。但从网上查到,有人说可能是我没有管理员权限。
-
这两个答案在技术上似乎都是正确的,但你到底想在这里做什么?最终目标是什么?