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 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发