1CM

  

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);
}

posted on 2007-03-14 17:07 1CM 阅读(103) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理