Win2K 关闭电源

Win2K 关闭电源

关于自动关机 
在Win9X 中直接使用ExitWindowsEx函数可以直接关机,
而在Win2K以上系统中就不是这样拉。
关键词:TOKEN_PRIVILEGES AdjustTokenPrivileges 

void CAutoStopDlg::Shutdown()
{
	if(IsNT())
	{
	HANDLE hToken;              // handle to process token 
	TOKEN_PRIVILEGES tkp;       // pointer to token structure 
	OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); 
	//TOKEN_ADJUST_PRIVILEGES 改变权限
	//TOKEN_QUERY 允许这个进程访问所有进程
	LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
	tkp.PrivilegeCount = 1;  // one privilege to set    
	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
	AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0); 
	//改变特权为有效	
	}

	ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE|EWX_POWEROFF,0);
}

你可能感兴趣的:(Win2K 关闭电源)