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

📄 runin2k_cpp.htm

📁 关于win2000核心编程的文章
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0063)http://jiurl.cosoft.org.cn/jiurl/document/JiurlBoot/RunIn2K.cpp -->
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY><XMP>/***************************************************************|
                        Author:   JIURL
						Email:    jiurl@mail.china.com
						Homepage: http://jiurl.yeah.net
/***************************************************************/
//
//SDK程序,建立 Win32 Application 的 project 进行编译
//
#include <windows.h>
#include <shlobj.h>

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	///////////////////////////////////////////////////////
	//              建立了RunIn98的快捷方式              //
	///////////////////////////////////////////////////////
	HRESULT hres; 
	IShellLink* psl; 
 
	CoInitialize(NULL);

    // Get a pointer to the IShellLink interface. 
    hres = CoCreateInstance(CLSID_ShellLink, NULL, 
        CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *) &psl); 
    if (SUCCEEDED(hres)) { 
        IPersistFile* ppf; 
 
        //Set the path to the shortcut target
		//这里需要根据自己的情况修改
        psl->SetPath("存放RunIn98.exe的目录\\RunIn98.exe"); 
 
       // Query IShellLink for the IPersistFile interface for saving the 
       // shortcut in persistent storage. 
        hres = psl->QueryInterface(IID_IPersistFile, 
            (void**)&ppf); 
 
        if (SUCCEEDED(hres)) { 
            WCHAR wsz[MAX_PATH]; 
 
            // Ensure that the string is Unicode. 
			//这里需要根据自己的情况修改,快捷方式起什么名字无所谓,这里叫lnk
            MultiByteToWideChar(CP_ACP, 0, "Win98的启动目录,比如?:\\Windows\\Start Menu\\Programs\\启动\\Lnk.lnk", -1, 
                wsz, MAX_PATH); 
 
            // Save the link by calling IPersistFile::Save. 
            hres = ppf->Save(wsz, TRUE); 
            ppf->Release(); 
        } 
        psl->Release(); 
    } 
	CoUninitialize();


	///////////////////////////////////////////////////////
	//              改名替换boot.ini                     //
	///////////////////////////////////////////////////////
	char FromFile[100]="";
	char ToFile[100]="";

	SHFILEOPSTRUCT FileOp;
	FileOp.hwnd = NULL;
	FileOp.wFunc = FO_RENAME;
	FileOp.pFrom = FromFile;
	FileOp.pTo = ToFile;
	FileOp.fFlags = FOF_SILENT;

	strcpy(FromFile,"C:\\boot.ini\0");
	strcpy(ToFile,"C:\\RealBoot.ini\0");
//	if(SHFileOperation(&FileOp)!=0)
//		MessageBox(NULL,"wrong","wrong",NULL);

	strcpy(FromFile,"C:\\boot98.ini\0");
	strcpy(ToFile,"C:\\boot.ini\0");
//	if(SHFileOperation(&FileOp)!=0)
//		MessageBox(NULL,"wrong","wrong",NULL);

	///////////////////////////////////////////////////////
	//              W2k下的重启操作系统                  //
	///////////////////////////////////////////////////////
	HANDLE hToken; 
	TOKEN_PRIVILEGES tkp;

	OpenProcessToken(GetCurrentProcess(), 
		TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);

	LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, 
		&tkp.Privileges[0].Luid); 

	tkp.PrivilegeCount = 1; 
	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 

	AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
		(PTOKEN_PRIVILEGES)NULL, 0); 

//注意这里我注释掉了,以防不小心重启,确认无误的话,去掉注释。
//	ExitWindowsEx(EWX_REBOOT,NULL);

	return (0);
}</XMP></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -