📄 可以让你从win2k直接重启到win98的程序编程.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0065)http://jiurl.cosoft.org.cn/jiurl/document/JiurlBoot/JiurlBoot.htm -->
<HTML><HEAD><TITLE>JiurlBoot</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content=黑客,安全,网络,编程,黑客软件,安全软件,hacker,UNIX,Linux,FreeBSD name=keywords>
<META content=黑客,安全,网络,编程,黑客软件,安全软件,hacker,UNIX,Linux,FreeBSD name=description>
<STYLE type=text/css>.title {
FONT-FAMILY: "黑体", Arial, sans-serif; FONT-SIZE: 21px; FONT-WEIGHT: bold; LINE-HEIGHT: 48px; TEXT-DECORATION: none
}
.author {
FONT-FAMILY: "宋体"; FONT-SIZE: 12px; LINE-HEIGHT: 16px
}
.content {
FONT-SIZE: 14px; LINE-HEIGHT: 20px
}
</STYLE>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY bgColor=#f7f7f7 topMargin=5>
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=29 width="96%">
<TBODY>
<TR>
<TD class=title height=41 width="100%">
<P align=center><FONT
face=宋体>可以让你从Win2K直接重启到Win98的程序编程</FONT></P></TD></TR></CENTER>
<TR>
<TD class=author height=9 width="100%">
<P align=center>作者: <A href="mailto:jiurl@mail.china.com">JIURL</A>
</P></TD></TR>
<TR>
<TD class=author height=6 width="100%">
<P
align=center>
主页: <A href="http://jiurl.yeah.net/">http://jiurl.yeah.net/</A> </P></TD></TR>
<TR>
<TD class=author height=2 width="100%">
<P align=center> 日期: 2003-1-13
</P></TD></TR></TBODY></TABLE></DIV>
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=1 width="96%">
<TBODY>
<TR>
<TD height=1 width="100%">
<HR color=#396da5 SIZE=3>
</TD></TR></TBODY></TABLE></CENTER></DIV>
<DIV align=center>
<TABLE border=0 cellPadding=0 cellSpacing=0 class=content height=3670
width="96%">
<TBODY>
<TR>
<TD height=1016 vAlign=top width="131%"><B>前言<BR>
</B>装个双系统是很值得推荐的,我的机子上装了三个系统。下面是我的boot.ini文件内容:<BR>____________________________________________________________________________________________<BR>[boot
loader]<BR>timeout=4<BR>default=multi(0)disk(0)rdisk(0)partition(2)\WINNT<BR>[operating
systems]<BR>multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows
2000 Professional" /fastdetect<BR>C:\="Microsoft Windows
98"<BR>C:\mbr.lnx="RedHat Linux
7.2"<BR>____________________________________________________________________________________________
<P>我主要用Win2K,一些时候回Win98玩游戏(Linux马上就开始用了)。从Win2K重启然后在 boot loader
中选择Win98,直到Win98启动完成,不得不傻坐在电脑前,这明显不利于身心健康,茁壮成长。于是我自己写了个程序,放在Win2K的桌面上,双击之后就跑去看电视,等我把所有台都转一遍,发现没什么好节目,再跑回来的时候就在Win98中了。<BR>
大家如果有兴趣,修改一下下面我将提供的程序,就可以自己也有一个实现这个功能的程序。如果真的有很多人需要这个程序的话,我可以考虑写成大家下载就可以方便的安装,简单方便使用的程序。
<P><B>方法</B><B><BR>
</B>概括的说,2K下,改变boot.ini中的内容,使默认项为Win98,不进行选择,就是延时为0。重新启动计算机,这样重启就自动进入了Win98,在98中再把boot.ini中的内容改回原来的就可以了。<BR>
我是这样做的,C盘下我又放了一个叫<A
href="http://jiurl.cosoft.org.cn/jiurl/document/JiurlBoot/boot98.ini">boot98.ini</A>的文件,它的timeout=0,默认项是Win98。完成Win2K下动作的程序比如叫RunIn2K。完成Win98下动作的程序比如叫做RunIn98。执行RunIn2K,它首先在Win98中的启动目录(...\Start
Menu\Programs\启动\)下建一个RunIn98的快捷方式,这样保证了在重启进入98后自动运行RunIn98来完成Win98下的那部分动作。接着RunIn2K把boot.ini改名为RealBoot.ini(改什么名字无所谓),把boot98.ini改名为boot.ini,这样boot.ini(换名字之前的boot98.ini)中的内容就是timeout=0,默认项是Win98。最后RunIn2K重启系统。由于boot.ini是以前的boot98.ini,于是系统重启直接进入Win98。由于刚才在启动中建立了RunIn98的快捷方式,启动之后就会运行RunIn98。RunIn98首先恢复boot.ini,就是把boot.ini改名为boot98.ini,把RealBoot.ini改名为boot.ini。最后删除启动中的快捷方式。整个过程就结束了。<BR>
还有几个问题说一下,建立快捷方式,然后又删除掉,应该是不会产生硬盘碎片的,因为一建立好之后,很快就删掉了。注意各种路径,我的整个 Documents
and Settings
目录,Win98,Win2K的那些比较容易产生硬盘碎片的目录都是放在一个专门的盘里面,和系统不在一起。<BR>
boot98.ini中的内容:<BR>____________________________________________________________________________________________<BR>[boot
loader]<BR>timeout=0<BR>default=C:\<BR>[operating
systems]<BR>C:\="Microsoft
Windows"<BR>multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows
2000 Professional"
/fastdetect<BR>____________________________________________________________________________________________
<P><B>程序<BR></B>
<B>RunIn2K</B>(用到了创建快捷方式,使用shell编程改文件名,和Win2K下重启系统。)<BR><B><BR></B>#include
<windows.h><BR>#include <shlobj.h><BR><BR>int APIENTRY
WinMain(HINSTANCE hInstance,<BR>HINSTANCE hPrevInstance,<BR>LPSTR
lpCmdLine,<BR>int
nCmdShow)<BR>{<BR>///////////////////////////////////////////////////////<BR>//
建立了RunIn98的快捷方式
//<BR>///////////////////////////////////////////////////////<BR>HRESULT
hres; <BR>IShellLink* psl; <BR><BR>CoInitialize(NULL);<BR><BR>//
Get a pointer to the IShellLink interface. <BR>hres =
CoCreateInstance(CLSID_ShellLink, NULL, <BR>CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID *) &psl); <BR>if (SUCCEEDED(hres))
{ <BR>IPersistFile* ppf; <BR><BR>//Set the path to the shortcut
target<BR>//这里需要根据自己的情况修改<BR>psl->SetPath("存放RunIn98.exe的目录\\RunIn98.exe"); <BR><BR>//
Query IShellLink for the IPersistFile interface for saving the <BR>//
shortcut in persistent storage. <BR>hres =
psl->QueryInterface(IID_IPersistFile, <BR>(void**)&ppf); <BR><BR>if
(SUCCEEDED(hres)) { <BR>WCHAR wsz[MAX_PATH]; <BR><BR>// Ensure
that the string is
Unicode. <BR>//这里需要根据自己的情况修改,快捷方式起什么名字无所谓,这里叫lnk<BR>MultiByteToWideChar(CP_ACP,
0, "Win98的启动目录,比如?:\\Windows\\Start Menu\\Programs\\启动\\Lnk.lnk",
-1, <BR>wsz, MAX_PATH); <BR><BR>// Save the link by calling
IPersistFile::Save. <BR>hres = ppf->Save(wsz,
TRUE); <BR>ppf->Release(); <BR>} <BR>psl->Release(); <BR>} <BR>CoUninitialize();<BR><BR><BR>///////////////////////////////////////////////////////<BR>//
改名替换boot.ini
//<BR>///////////////////////////////////////////////////////<BR>char
FromFile[100]="";<BR>char ToFile[100]="";<BR><BR>SHFILEOPSTRUCT
FileOp;<BR>FileOp.hwnd = NULL;<BR>FileOp.wFunc =
FO_RENAME;<BR>FileOp.pFrom = FromFile;<BR>FileOp.pTo =
ToFile;<BR>FileOp.fFlags =
FOF_SILENT;<BR><BR>strcpy(FromFile,"C:\\boot.ini\0");<BR>strcpy(ToFile,"C:\\RealBoot.ini\0");<BR>//
if(SHFileOperation(&FileOp)!=0)<BR>//
MessageBox(NULL,"wrong","wrong",NULL);<BR><BR>strcpy(FromFile,"C:\\boot98.ini\0");<BR>strcpy(ToFile,"C:\\boot.ini\0");<BR>//
if(SHFileOperation(&FileOp)!=0)<BR>//
MessageBox(NULL,"wrong","wrong",NULL);<BR><BR>///////////////////////////////////////////////////////<BR>//
W2k下的重启操作系统
//<BR>///////////////////////////////////////////////////////<BR>HANDLE
hToken; <BR>TOKEN_PRIVILEGES
tkp;<BR><BR>OpenProcessToken(GetCurrentProcess(), <BR>TOKEN_ADJUST_PRIVILEGES
| TOKEN_QUERY, &hToken);<BR><BR>LookupPrivilegeValue(NULL,
SE_SHUTDOWN_NAME, <BR>&tkp.Privileges[0].Luid); <BR><BR>tkp.PrivilegeCount
= 1; <BR>tkp.Privileges[0].Attributes =
SE_PRIVILEGE_ENABLED; <BR><BR>AdjustTokenPrivileges(hToken, FALSE,
&tkp, 0,<BR>(PTOKEN_PRIVILEGES)NULL,
0); <BR><BR>//注意这里我注释掉了,以防不小心重启,确认无误的话,去掉注释。<BR>//
ExitWindowsEx(EWX_REBOOT,NULL);<BR><BR>return (0);<BR>}
<P> <B>RunIn98</B>
<P>#include <windows.h><BR><BR>int APIENTRY WinMain(HINSTANCE
hInstance,<BR>HINSTANCE hPrevInstance,<BR>LPSTR lpCmdLine,<BR>int
nCmdShow)<BR>{<BR>///////////////////////////////////////////////////////<BR>//
改名替换boot.ini
//<BR>///////////////////////////////////////////////////////<BR>char
FromFile[100]="";<BR>char ToFile[100]="";<BR><BR>SHFILEOPSTRUCT
FileOp;<BR><BR>FileOp.hwnd = NULL;<BR>FileOp.wFunc =
FO_RENAME;<BR>FileOp.pFrom = FromFile;<BR>FileOp.pTo =
ToFile;<BR>FileOp.fFlags =
FOF_SILENT;<BR><BR>strcpy(FromFile,"C:\\boot.ini\0");<BR>strcpy(ToFile,"C:\\boot98.ini\0");<BR>if(SHFileOperation(&FileOp)!=0)<BR>MessageBox(NULL,"wrong","wrong",NULL);<BR><BR>strcpy(FromFile,"C:\\RealBoot.ini\0");<BR>strcpy(ToFile,"C:\\boot.ini\0");<BR>if(SHFileOperation(&FileOp)!=0)<BR>MessageBox(NULL,"wrong","wrong",NULL);<BR><BR>//这里需要根据自己的情况修改,快捷方式的名字要与RunIn2k中的对应<BR>DeleteFile("Win98的启动目录,比如?:\\Windows\\Start
Menu\\Programs\\启动\\Lnk.lnk");<BR><BR>return (0);<BR>}
<P><B>后记<BR>
</B>按照这种方法,WinXX到WinYY都是差不多的。其他系统也可以考虑。RunIn98和RunIn2K其实可以在一个程序中,只要加一个判断当前是什么系统,如果是98就执行98部分程序,如果是2K就执行2K部分程序。有问题和建议欢迎和我联系。
<P><A
href="http://jiurl.cosoft.org.cn/jiurl/document/JiurlBoot/boot.ini">我的boot.ini</A>
<A
href="http://jiurl.cosoft.org.cn/jiurl/document/JiurlBoot/boot98.ini">我的boot98.ini</A>
<A
href="http://jiurl.cosoft.org.cn/jiurl/document/JiurlBoot/RunIn2K.cpp">RunIn2K源程序</A>
<A
href="http://jiurl.cosoft.org.cn/jiurl/document/JiurlBoot/RunIn98.cpp">RunIn98源程序</A>
</P></TD></TR></TBODY></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -