通过编程实现程序自动启动

来源:互联网 发布:淘宝哪些店铺女装好看 编辑:程序博客网 时间:2024/05/16 19:34

先介绍能让WINDOWS自动启动的2个文件和8个注册键

      1: 当前用户专用的启动文件夹 将快捷方式放入WINDOWS的用户启动文件夹中.
           路径:系统盘:/Document and Settings/<用户名称>/"开始"/程序/启动

      2:所有用户的启动文件夹
           路径:系统盘:/Document and Settings/ALL USER/"开始"/程序/启动

以下是注册键,均可以通过注册表直接搜索得到

      1:LOAD注册键

      2:USERINIT注册键

      3:EXPLORER/RUN注册键

      4:RUNSERVICESONCE注册键

      5:RUNSERVICES注册键

      6:RUNONCE/STEUP注册键

      7:RUNONCE注册键

      8:RUN注册键

测试:通过编程实现程序自启动

     #include <stdio.h>
     #include <windows.h>
int main(void)
{
char regname[]="Software//Microsoft//Windows//CurrentVersion//Run";
HKEY hkResult;
int ret=RegOpenKey(HKEY_LOCAL_MACHINE,regname,&hkResult);                            //打开关键字

ret=RegSetValueEx(hkResult,"hacker"/* 注册表键名*/,0,REG_EXPAND_SZ,(unsigned char *)"%systemroot%//hacker.exe",25);
                 //设置键值
if(ret==0){
  printf("success to write run key/n");
  RegCloseKey(hkResult);
  }
else {
 printf("failed to open regedit.%d/n",ret);
 return 0;
}
char modlepath[256];
char syspath[256];
GetModuleFileName(0,modlepath,256);                                       //取得程序名字
GetSystemDirectory(syspath,256);
ret=CopyFile(modlepath,strcat(syspath,"//hacker.exe"),1);
if(ret)
{
 printf("%s has been copyed to sys dir %s/n",modlepath,syspath);
}
else printf("%s is exisis",modlepath);
return 0;
}

 

朋友问我在vs2005上这段程序用不了。因为我是在vc++6.0上运行的,所以我觉的实现其实是相同的

 

TCHAR strFileName[100];

// CString m_fileName;

GetModuleFileName(NULL,strFileName,100);//获得程序路径

HKEY hKey;

CString str = _T("Software//Microsoft//Windows//CurrentVersion//Run");

if (ERROR_SUCCESS != RegCreateKey(HKEY_LOCAL_MACHINE, str, &hKey))

{

MessageBox(_T("打开注册表项失败"));

RegCloseKey(hKey);

}

int length = 0;

while(strFileName[length]!=_T('/0'))

length++;

if (ERROR_SUCCESS != RegSetValueEx(hKey, _T("MFCAutoRun"), 0, REG_SZ, (const BYTE *)strFileName, sizeof(TCHAR)*length))

{

MessageBox(_T("写注册表失败"));

RegCloseKey(hKey);

}

RegCloseKey(hKey);

 

原创粉丝点击