为了便于使用,操作系统通常会提供开机自启动功能,这样能方便用户不用人为的去运行程序就能自己运行起来,由于开机自启动的特殊性,此类功能也往往是红蓝对抗重点博弈的地方。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
#include <Windows.h>
#include <stdio.h>
BOOL SetKeyValue(PCHAR lpszFileName, PCHAR lpszKeyValue,CHAR cType) {
HKEY hKey=NULL;
PCHAR KeyAddr=NULL;
switch (cType)
{
case 1:
KeyAddr = (PCHAR)"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run";
break;
case 2:
KeyAddr = (PCHAR)"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run";
break;
case 3:
break;
}
if (ERROR_SUCCESS!=RegOpenKeyEx(HKEY_CURRENT_USER,KeyAddr,0,KEY_WRITE,&hKey))
{
return FALSE;
}
if (ERROR_SUCCESS!= RegSetValueEx(hKey,lpszKeyValue,0,REG_SZ,(PBYTE)lpszFileName,1+strlen(lpszFileName)))
{
RegCloseKey(hKey);
return FALSE;
}
RegCloseKey(hKey);
}
int main()
{
if (FALSE == SetKeyValue((PCHAR)"C:\\Windows\\System32\\cmd.exe", (PCHAR)"cmd",1))
{
printf("ok");
}
return 0;
}