Anansi_safe 2019-01-01 16:50 采纳率: 0%
浏览 891

RegSetValueEx改写注册表的

#include<Windows.h>
#include<winnt.h>
#include<TlHelp32.h>
#include<winreg.h>
#include<WinBase.h>
#include<string>
#include<iostream>
using namespace std;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hin, LPSTR lPst, int ShowCmd)
{
    HKEY hkey_0;
    HKEY hkey_1;
    char path_0[MAX_PATH];
    DWORD w[3] = { 0,0,0 };
    GetModuleFileName(NULL, path_0, sizeof(path_0));
    RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hkey_1);
    RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"), 0, KEY_ALL_ACCESS, &hkey_0);
    long o = RegSetValueEx(hkey_1, "POPE", REG_SZ, 0, (BYTE*)"sss", (DWORD)strlen("sss"));
    string g = "error:";
    g.append(to_string(o));
    if (o != ERROR_SUCCESS)
        MessageBox(NULL, TEXT(g.c_str()), TEXT("0000"), MB_OK);
    RegSetValueEx(hkey_0, "ConsentPromptBehaviorAdmin", 0, REG_DWORD, (BYTE*)&w[0], sizeof(DWORD));
    RegSetValueEx(hkey_0, "EnableLUA", 0, REG_DWORD, (BYTE*)&w[1], sizeof(DWORD));
    RegSetValueEx(hkey_0, "PromptOnSecureDesktop", 0, REG_DWORD, (BYTE*)&w[2], sizeof(DWORD)); 
    RegCloseKey(hkey_0);
    RegCloseKey(hkey_1);
    return 0;
}

改写hkey_0的时候没有出错改写成功,但是写hkey_1的时候改写失败,用MessageBox()显示RegSetValueEx()返回值为87,用GetLastError得到的是0,但是没有被写进注册表,注册表里根本找不到这一项
怎么破。。。。

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-01-01 12:27
    关注

    看下权限是否足够,local_machine是敏感部位,需要管理员权限。如果没有权限,那么你的注册表写入会重定向到沙箱,本程序可以获取,但是别的程序看不到。

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?