⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 可以让你从win2k直接重启到win98的程序编程.htm

📁 关于win2000核心编程的文章
💻 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      主页: <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>&nbsp;&nbsp;&nbsp; 日期: 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>&nbsp;&nbsp;&nbsp; 
      </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>&nbsp;&nbsp;&nbsp; 
      大家如果有兴趣,修改一下下面我将提供的程序,就可以自己也有一个实现这个功能的程序。如果真的有很多人需要这个程序的话,我可以考虑写成大家下载就可以方便的安装,简单方便使用的程序。
      <P><B>方法</B><B><BR>&nbsp;&nbsp;&nbsp; 
      </B>概括的说,2K下,改变boot.ini中的内容,使默认项为Win98,不进行选择,就是延时为0。重新启动计算机,这样重启就自动进入了Win98,在98中再把boot.ini中的内容改回原来的就可以了。<BR>&nbsp;&nbsp;&nbsp; 
      我是这样做的,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>&nbsp;&nbsp;&nbsp; 
      还有几个问题说一下,建立快捷方式,然后又删除掉,应该是不会产生硬盘碎片的,因为一建立好之后,很快就删掉了。注意各种路径,我的整个 Documents 
      and Settings 
      目录,Win98,Win2K的那些比较容易产生硬盘碎片的目录都是放在一个专门的盘里面,和系统不在一起。<BR>&nbsp;&nbsp;&nbsp; 
      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>&nbsp;&nbsp;&nbsp; 
      <B>RunIn2K</B>(用到了创建快捷方式,使用shell编程改文件名,和Win2K下重启系统。)<BR><B><BR></B>#include 
      &lt;windows.h&gt;<BR>#include &lt;shlobj.h&gt;<BR><BR>int APIENTRY 
      WinMain(HINSTANCE hInstance,<BR>HINSTANCE hPrevInstance,<BR>LPSTR 
      lpCmdLine,<BR>int 
      nCmdShow)<BR>{<BR>///////////////////////////////////////////////////////<BR>// 
      建立了RunIn98的快捷方式 
      //<BR>///////////////////////////////////////////////////////<BR>HRESULT 
      hres;&nbsp;<BR>IShellLink* psl;&nbsp;<BR><BR>CoInitialize(NULL);<BR><BR>// 
      Get a pointer to the IShellLink interface.&nbsp;<BR>hres = 
      CoCreateInstance(CLSID_ShellLink, NULL,&nbsp;<BR>CLSCTX_INPROC_SERVER, 
      IID_IShellLink, (LPVOID *) &amp;psl);&nbsp;<BR>if (SUCCEEDED(hres)) 
      {&nbsp;<BR>IPersistFile* ppf;&nbsp;<BR><BR>//Set the path to the shortcut 
      target<BR>//这里需要根据自己的情况修改<BR>psl-&gt;SetPath("存放RunIn98.exe的目录\\RunIn98.exe");&nbsp;<BR><BR>// 
      Query IShellLink for the IPersistFile interface for saving the&nbsp;<BR>// 
      shortcut in persistent storage.&nbsp;<BR>hres = 
      psl-&gt;QueryInterface(IID_IPersistFile,&nbsp;<BR>(void**)&amp;ppf);&nbsp;<BR><BR>if 
      (SUCCEEDED(hres)) {&nbsp;<BR>WCHAR wsz[MAX_PATH];&nbsp;<BR><BR>// Ensure 
      that the string is 
      Unicode.&nbsp;<BR>//这里需要根据自己的情况修改,快捷方式起什么名字无所谓,这里叫lnk<BR>MultiByteToWideChar(CP_ACP, 
      0, "Win98的启动目录,比如?:\\Windows\\Start Menu\\Programs\\启动\\Lnk.lnk", 
      -1,&nbsp;<BR>wsz, MAX_PATH);&nbsp;<BR><BR>// Save the link by calling 
      IPersistFile::Save.&nbsp;<BR>hres = ppf-&gt;Save(wsz, 
      TRUE);&nbsp;<BR>ppf-&gt;Release();&nbsp;<BR>}&nbsp;<BR>psl-&gt;Release();&nbsp;<BR>}&nbsp;<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(&amp;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(&amp;FileOp)!=0)<BR>// 
      MessageBox(NULL,"wrong","wrong",NULL);<BR><BR>///////////////////////////////////////////////////////<BR>// 
      W2k下的重启操作系统 
      //<BR>///////////////////////////////////////////////////////<BR>HANDLE 
      hToken;&nbsp;<BR>TOKEN_PRIVILEGES 
      tkp;<BR><BR>OpenProcessToken(GetCurrentProcess(),&nbsp;<BR>TOKEN_ADJUST_PRIVILEGES 
      | TOKEN_QUERY, &amp;hToken);<BR><BR>LookupPrivilegeValue(NULL, 
      SE_SHUTDOWN_NAME,&nbsp;<BR>&amp;tkp.Privileges[0].Luid);&nbsp;<BR><BR>tkp.PrivilegeCount 
      = 1;&nbsp;<BR>tkp.Privileges[0].Attributes = 
      SE_PRIVILEGE_ENABLED;&nbsp;<BR><BR>AdjustTokenPrivileges(hToken, FALSE, 
      &amp;tkp, 0,<BR>(PTOKEN_PRIVILEGES)NULL, 
      0);&nbsp;<BR><BR>//注意这里我注释掉了,以防不小心重启,确认无误的话,去掉注释。<BR>// 
      ExitWindowsEx(EWX_REBOOT,NULL);<BR><BR>return (0);<BR>}
      <P>&nbsp;&nbsp;&nbsp; <B>RunIn98</B>
      <P>#include &lt;windows.h&gt;<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(&amp;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(&amp;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>&nbsp;&nbsp;&nbsp; 
      </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 + -