MFC实现程序开机自启动(II)

很多监控软件要求软件能够在系统重新启动后不用用户去点击图标启动项目,而是直接能够启动运行,方法是写注册表

char szProcFullName[MAX_PATH] = { 0 };

::GetModuleFileName(NULL, szProcFullName, MAX_PATH);

HKEY hSubKey = NULL;

HKEY hKey = HKEY_CURRENT_USER;

const char* szSubKey = TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run");

LONG lRet = RegOpenKeyEx(hKey, szSubKey, 0, KEY_ALL_ACCESS, &hSubKey);

RegSetValueEx(hSubKey, "KeyName", NULL, REG_SZ, (const BYTE*)szProcFullName, strlen(szProcFullName)); //KeyName自定义,通常为执行文件名

一、当前用户专有的启动文件夹

这是许多应用软件自动启动的常用位置,Windows自动启动放入该文件夹的所有快捷方式。用户启动文件夹一般在:/Documents and Settings/<用户名字>/「开始」菜单/程序/启动,其中“<用户名字>”是当前登录的用户帐户名称。

二、对所有用户有效的启动文件夹

这是寻找自动启动程序的第二个重要位置,不管用户用什么身份登录系统,放入该文件夹的快捷方式总是自动启动——这是它与用户专有的启动文件夹的区别所在。该文件夹一般在:/Documents and Settings/All Users/「开始」菜单/程序/启动。

三、Load注册键

介绍该注册键的资料不多,实际上它也能够自动启动程序。位置:HKEY_CURRENT_USER/Software/Microsoft/WindowsNT/CurrentVersion/Windows/load。

四、Userinit注册键

位置:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/Winlogon/Userinit。这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个userinit.exe,如图,但这个键允许指定用逗号分隔的多个程序,例如“userinit.exe,OSA.exe”(不含引号)。

五、Explorer/Run注册键

和load、Userinit不同,Explorer/Run键在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下都有,具体位置是:HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/Run,和HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/Explorer/Run。

六、RunServicesOnce注册键

RunServicesOnce注册键用来启动服务程序,启动时间在用户登录之前,而且先于其他通过注册键启动的程序。RunServicesOnce注册键的位置是:HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunServicesOnce,和HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesOnce。

七、RunServices注册键

RunServices注册键指定的程序紧接RunServicesOnce指定的程序之后运行,但两者都在用户登录之前。RunServices的位置是:HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunServices,和HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServices。

八、RunOnce/Setup注册键

RunOnce/Setup指定了用户登录之后运行的程序,它的位置是:HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce/Setup,和HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce/Setup。

九、RunOnce注册键

安装程序通常用RunOnce键自动运行程序,它的位置在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce和HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/RunOnce。HKEY_LOCAL_MACHINE下面的RunOnce键会在用户登录之后立即运行程序,运行时机在其他Run键指定的程序之前。HKEY_CURRENT_USER下面的RunOnce键在操作系统处理其他Run键以及“启动”文件夹的内容之后运行。如果是XP,你还需要检查一下HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEx。

十、Run注册键

Run是自动运行程序最常用的注册键,位置在:HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run,和HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run。HKEY_CURRENT_USER下面的Run键紧接HKEY_LOCAL_MACHINE下面的Run键运行,但两者都在处理“启动”文件夹之前。

有时候人们往往会为了一个程序的启动而头痛,因为一些用户往往不知道那些文件是如何启动的。所以经常会有些没用的东西挂在系统上占用资源。有时候也会有人因为不知道如何启动某个文件而头痛。更有些特洛依木马的作者因为不清楚系统的自启动方式而使自己的木马轻松被别人发现……

时间: 2024-08-19 02:55:55

MFC实现程序开机自启动(II)的相关文章

MFC实现程序开机自启动

把程序设为开机启动,有三种方式: (1). 把程序增加到注册表的开机运行项, 系统: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 用户: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 需要注意32位程序在64位系统运行,操作注册表被重定向的问题. (2). 增加执行程序的快捷方式到系统开机启动目录,Windows自动启动放入该文件

MFC应用程序开机自启动

void CGestureRecognitionDlg::AutoStart(BOOL IsAutoStart) { HKEY hKey; CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); //找到系统的启动项 if (IsAutoStart) { if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS,

cenOS设置程序开机自启动的方法

cenOS设置程序开机自启动的方法主要有两种 1.把启动程序的命令添加到/etc/rc.d/rc.local 文件夹中. eg1.设置开机启动mysql vim /etc/rc.d/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want

android 程序开机自启动

今天遇到程序开机自启动,然后查了一下,很简单,就记录一下. 开机自启动,一般我们是开启启动一个广播,然后在广播里启动Activity或者别的服务. 我们要做的很简单,就是在AndroidManifest.xml  里面的广播中添加一行代码 <receiver android:name="广播名称"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED

Windows下通过写注册表的方式实现程序开机自启动

程序可以读取同目录下的config.ini文件中的配置来实现开机自启动. config.ini文件地格式实例如下: [Main] KeyName = test ProcessPath = D:\bin\test.exe 其中KeyName字段为写入注册表的表项名称(可以设置为程序名) ProcessPath为程序的完整路径 程序的完整源代码如下. regedit函数实现注册表写入,autopen实现开机自启动. 编译后的程序在此下载:程序下载 #include <stdio.h> #inclu

C#如何设置程序开机自启动

如果想要将一个exe程序设置为开机自启动,其实就是在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run注册表项中添加一个注册表变量,这个变量的值是程序的所在路径. 具体操作步骤是: 1.使用RegistryKey类的CreateSubKey方法打开HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Ru

linux 让一个程序开机自启动并把一个程序加为服务

本文以tomcat7为例 首先找到tomcat启动的目录,我的为 cd /usr/local/tomcat7/bin/ 这个目录 启动脚本是startup.sh 然后在/etc/rc.d/rc.local 这个文件中将tomcat的启动脚本添加进来即可. 重启操作系统,发现tomcat7可以开机自启动了. 将tomcat添加为服务 将 /usr/local/tomcat7/bin/catalina.sh 这个文件拷贝到 /etc/rc.d/init.d 这个目录并重命名为tomcat 使用命令

程序开机自启动

关于让程序在手机开机的时候自启动,给一个小的Demo 1. [代码]主活动界面 package com.android.antking.startloading; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; public c

设置让程序开机自启动的方法

以下方法均可以让程序开机自启动. 1.    在/etc/rc.d/rc.sysinit 末尾添加命令或要执行的程序脚本该脚本run once at boot time.所以对所有启动级别都有效 2.    在/etc/rc.d/rc.local中添加命令或要执行的程序脚本这个脚本将被执行在所有其他的init脚本执行完成后,默认对2345启动级别有效. 3.    在对应启动级别的/etc/rc.d/rcX.d 做连接文件连接的格式如:ln  -s  /etc/rc.d/init.d/xx  /