Code实现注册系统服务

来源:互联网 发布:布鲁克斯甘油14知乎 编辑:程序博客网 时间:2024/06/06 06:30

主要用到三个Functions:

#define RegOpenKeyEx  RegOpenKeyExA
RegOpenKeyExA(    _In_ HKEY hKey,    _In_opt_ LPCSTR lpSubKey,    _In_opt_ DWORD ulOptions,    _In_ REGSAM samDesired,    _Out_ PHKEY phkResult    );

#define RegSetValueEx  RegSetValueExA
RegSetValueExA(    _In_ HKEY hKey,    _In_opt_ LPCSTR lpValueName,    _Reserved_ DWORD Reserved,    _In_ DWORD dwType,    _In_reads_bytes_opt_(cbData) CONST BYTE * lpData,    _In_ DWORD cbData    );

RegCloseKey(    _In_ HKEY hKey    );

小例程:

#include <io.h>#include <Windows.h>#include <iostream>INT WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int){char _buf[1000];std::string path;GetModuleFileName(NULL, _buf,1000);path.append(_buf);HKEY hkey;if(RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hkey) == ERROR_SUCCESS){RegSetValueEx(hkey, TEXT("Test"), 0, REG_SZ, (LPBYTE)path.c_str(), path.length());}RegCloseKey(hkey);}


Tips:

#define HKEY_CURRENT_USER                   (( HKEY ) (ULONG_PTR)((LONG)0x80000001) )#define HKEY_LOCAL_MACHINE                  (( HKEY ) (ULONG_PTR)((LONG)0x80000002) )#define HKEY_USERS                          (( HKEY ) (ULONG_PTR)((LONG)0x80000003) )
三者针对的权限不同,如果是
HKEY_LOCAL_MACHINE
则需要管理员权限。

原创粉丝点击