指的注意的是,如果你是在编译器里的话,那么要将编译器以管理员的方式打开,如果是写出来的exe的话,那么请以管理员方式运行,反正就是要管理员权限就行了,为什么,因为注册表涉及的计算机安全好了
#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;
int set()
{
LPCTSTR lpSubKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
HKEY hKey;
REGSAM flag = KEY_WOW64_64KEY;
DWORD dwDisposition = REG_OPENED_EXISTING_KEY;
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpSubKey, 0, KEY_ALL_ACCESS | flag, &hKey);
//LONG lRet = ::RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpSubKey, NULL, NULL, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
if (ERROR_SUCCESS != lRet)
{
printf("打开注册表失败,也许是权限不足");
while (1);
return 0;
}
TCHAR *pchrName = "D:\\abc.txt";//这里是程序的绝对路径,不仅exe可以开机自启,其他程序依然可以
lRet = ::RegSetValueEx(hKey, TEXT("TEST"), NULL, REG_SZ, (LPBYTE)pchrName, strlen(pchrName)*sizeof(TCHAR)+1); //设置注册表项
if (ERROR_SUCCESS != lRet)
{
printf("写入注册表失败,也许是权限不足");
while (1);
return 0;
}
::RegCloseKey(hKey); //与RegCreateKeyEx配对写
printf("成功");
}
int main()
{
set();
while (1);
return 0;
}
发表评论: