1、最简单的方法就是通过msconfig文件管理启动项目2、打开开始菜单,在查找框输入msconfig3、可以看到msconfig.exe程序了,进入程序窗口4、选择引导选项卡,进入启动项管理设。修改电脑启动文件代码?更多详情请大家跟着小编一起来看看吧!

修改电脑启动文件代码

修改电脑启动文件代码(1)

1、最简单的方法就是通过msconfig文件管理启动项目。

2、打开开始菜单,在查找框输入msconfig。

3、可以看到msconfig.exe程序了,进入程序窗口。

4、选择引导选项卡,进入启动项管理设置。

5、选择一下32位win7系统或64位win7系统,点击设为默认值。

6、也可以通过删除功能将系统中不需要的操作系统启动项删除掉。

修改电脑启动文件代码

修改电脑启动文件代码(2)

开机启动有两种方式,一是修改注册表,二是复制exe文件到startup里;下面看具体代码;

第一种,修改注册表

void ChooseInvoke() { CString RegPath = _T("SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run"); char sPath[MAX_PATH] = ""; char sSys[MAX_PATH] = ""; std::string strExe = "\\\\RemoteCtrl.exe "; GetCurrentDirectoryA(MAX_PATH, sPath); GetSystemDirectoryA(sSys, sizeof(sSys)); std::string strCmd = "mklink " + std::string(sSys) + strExe + std::string(sPath) + strExe; int ret = system(strCmd.c_str()); TRACE("ret=%d\\r\\n", ret); HKEY hKey = NULL; ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegPath, 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKey); } 12345678910111213141234567891011121314

RegPath :是需要修改的注册表的路径;

strExe :是需要启动的EXE文件名;文件名后也需要添加一个空格;

GetCurrentDirectoryA:这个函数是获取当前文件所在的路径;

GetSystemDirectoryA:这个函数是获取window目录名;

mklink : mklink是 Windows 下用于创建符号链接的工具,是软链接;

strCmd:就是将俩个需要用到的路径链接到一起;mklink是命令,如果想要在程序结束时命令框不退出,可以这样

“cmd k mklink ”;还有需要注意的是命令和字符串之间要有空格 ,像这样“mklink ”;

RegOpenKeyEx:用于打开一个指定的注册表键;

LONG RegOpenKeyEx( HKEY hKey, 需要打开的主键的名称 LPCTSTR lpSubKey, 需要打开的子键的名称 DWORD ulOptions, 保留,设为0 REGSAM samDesired, 安全访问标记,也就是权限 PHKEY phkResult 得到的将要打开键的句柄 ) 12345671234567

程序中还需要用到的函数是RegSetValueEx:若想要设置的注册表项下不是默认值,即有名称值的数据和类型时,可以调用RegSetValueEx函数,该函数将在注册表项下设置指定值的数据和类型。

ret = RegSetValueEx(hKey, _T("RemoteCtrl.exe"), 0, REG_EXPAND_SZ, (BYTE*)(LPCTSTR)strPath, strPath.GetLength()*sizeof(TCHAR)); 11

最后,别忘了把得到的句柄关闭:RegCloseKey(hKey);

这些是主要的函数,还有一些业务型代码需要自己去写;比如一些判断句柄是否打开,文件路径是否正确;

第二种,复制文件

打开启动文件夹命令:win+R 键,输入shell:startup,就是开机启动路径;

先看代码:

void WriteStartUp() { CString startPath = _T("C:\\\\Users\\\\Administrator\\\\AppData\\\\Roaming\\\\Microsoft\\\\Windows\\\\Start Menu\\\\Programs\\\\Startup"); CString strCmd = GetCommandLine(); strCmd.Replace(_T("\\""), _T("")); BOOL art = CopyFile(strCmd, startPath, FALSE); if (art == FALSE) { MessageBox(NULL, _T("复制文件失败,请检查权限!\\r\\n"), _T("错误"), MB_ICONERROR | MB_TOPMOST); exit(0); } } 123456789101112123456789101112

startPath :就是你用命令得到的路径;

GetCommandLine:是一个窗口函数,win32有基于控制台和基于窗口俩种可执行文件;控制台入口是main函数,基于窗口的入口是winmain函数;GetCommandLine函数的作用是获取程序的命令行参数然后以参数的形式传递给WinMain函数;

strCmd:因为在使用GetCommandLine函数时,多添加了双引号,得用 Replace去掉

CopyFile:这个函数就是拷贝的意思,当然可以不用这个函数,可以用string系列字符写一个拷贝函数;

还有一个需要注意的是最好在项目属性中配置在静态库中使用;

修改电脑启动文件代码

修改电脑启动文件代码(3)

我们知道MBR分区的硬盘,最多可以设置4个主分区,每个主分区可以装不同的操作系统,设置为活动分区之后,就可以启动相应分区下的操作系统。

本日志,记录的就是修改硬盘MBR启动代码,在启动过程中动态修改硬盘的活动分区,从而实现启动不同的操作系统。

1.默认启动已经设置为活动分区的主分区。

2.在电脑启动时,按右shift键启动第一主分区(hd0,0)。

3.在电脑启动时,按左shift键启动第二主分区(hd0,1)。

4.在电脑启动时,按ctrl键启动第三主分区(hd0,2)。

5.在电脑启动时,按alt键启动第四主分区(hd0,3)。

没有改动硬盘启动部分代码,只是改了开头的一个跳转代码到我所加的代码处执行。所加代码所占用的空间为原始MBR出错信息所在的空间。我把出错信息作了减缩,所以,出错的话,还是会有提示的。

实现过程:

1.运行硬盘分区软件,将MBR保存为文件MBR.DAT。

2.在XP DOS命令行下运行DEBUG,按照设想的功能进行汇编,再反汇编,得到机器码;

3.用UltraEdit打开MBR.dat文件,将机器码逐个敲入相应地址中。将偏移地址25,26处的值从"1C","06"改为"62","07"(跳转到附加的代码处执行)。。

4.将修改后的MBR.dat文件写回到硬盘的第一扇区。

这是第一种修改方法:(所添加的代码为MBR出错信息所在的地址,这个MBR的出错信息比较少,空间紧凑。)

所加的代码从MBR的第354字节处开始,具体代码如下:

0000:0762 B402 MOV AH,02

0000:0764 CD16 INT 16

0000:0766 240F AND AL,0F

0000:0768 3C00 CMP AL,00

0000:076A 7438 JZ 07A4

#是否右shift键按下

0000:076C A801 TEST AL,01

0000:076E 750C JNZ 077C

#是否左shift键按下

0000:0770 A802 TEST AL,02

0000:0772 750D JNZ 0781

#是否ctrl键按下

0000:0774 A804 TEST AL,04

0000:0776 750E JNZ 0786

#是否alt键按下

0000:0778 A808 TEST AL,08

0000:077A 750F JNZ 078B

#第一主分区激活字节地址

0000:077C BBBE07 MOV BX,07BE

0000:077F EB0D JMP 078E

#第二主分区激活字节地址

0000:0781 BBCE07 MOV BX,07CE

0000:0784 EB08 JMP 078E

#第三主分区激活字节地址

0000:0786 BBDE07 MOV BX,07DE

0000:0789 EB03 JMP 078E

#第四主分区激活字节地址

0000:078B BBEE07 MOV BX,07EE

#先将各活动标志清零

0000:078E B400 MOV AH,00

0000:0790 8826BE07 MOV [07BE],AH

0000:0794 8826CE07 MOV [07CE],AH

0000:0798 8826DE07 MOV [07DE],AH