日期:2014-05-20  浏览次数:20854 次

C#中如何用ExitWindowEx实现关闭WindowsXP
本人是个新手,用C#帮朋友写了一个定时关机的小程序,可是在WindowsXP无法运行。
查了很多相关资料,终于明白了是系统权限的问题。
根据网上的资料,修改了源程序,可是还是不行。
主要的问题是对   OpenProcessToken   、LookupPrivilegeValue   和   AdjustTokenPrivileges   这三个函数的作用和用法不太明白。
恳请各位前辈给小弟讲解讲解。
主要是那三个函数的格式、作用和用法(最好是能把带注释的源码贴上来,网上有些源码不全,看不懂,也运行不了)。
在这里,小弟先谢谢各位前辈了。

------解决方案--------------------
AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),NULL,NULL);//调整进程令牌,使其支持关机;

ExitWindowsEx(EWX_LOGOFF,0);//注销系统;

LockWorkStation();//锁定系统;

InitiateSystemShutdown(NULL,szMessage,dwTimeout,FALSE,bSig);//支持到记时和消息显示的关机/重启;


SetSystemPowerState(bSig,FALSE);//系统休眠/冬眠;

------解决方案--------------------
看这个
http://www.chenjiliang.com/Article/View.aspx?ArticleID=2087&TypeID=84

http://www.cnblogs.com/kasafuma/archive/2005/12/20/300557.aspx