- 在线时间
- 1957 小时
- 最后登录
- 2024-6-29
- 注册时间
- 2004-4-26
- 听众数
- 49
- 收听数
- 0
- 能力
- 60 分
- 体力
- 40960 点
- 威望
- 6 点
- 阅读权限
- 255
- 积分
- 23863
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 20501
- 主题
- 18182
- 精华
- 5
- 分享
- 0
- 好友
- 140
TA的每日心情 | 奋斗 2024-6-23 05:14 |
|---|
签到天数: 1043 天 [LV.10]以坛为家III
 群组: 万里江山 群组: sas讨论小组 群组: 长盛证券理财有限公司 群组: C 语言讨论组 群组: Matlab讨论组 |
< >bool closecomputer(int kind)
. C+ ]/ n$ _+ _5 d7 z' e{
: }) q. x( l/ ?- A HANDLE hToken;$ C* f) h; Y4 Q& e4 i3 T& H
TOKEN_PRIVILEGES tkp; </P>
, Y. }) O. B! F9 ~ X/ C5 H% _< > // Get a token for this process.: I- }) x9 b8 G4 C: Z3 T
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)), L% L; L7 _* ]5 @: Z# D7 h
{
/ F; t+ Z7 t7 p# T0 j return false;. Y& l+ P) G# Z& G- z
}</P>
+ [4 a: Q3 M/ k! P1 l6 T, n< > // Get the LUID for the shutdown privilege.8 O, _" f( x) c- [! y q/ i5 A
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); </P>0 a; p- w: u2 }
< > tkp.PrivilegeCount = 1; // one privilege to set
- z3 A1 ^6 G1 M8 k2 L8 Q7 T tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;</P>
6 X% i" f i! ]5 ]; o< > // Get the shutdown privilege for this process.. ^4 t7 [- b+ B% K U$ L) V
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);</P>
) s! | L- ^% }< > if (GetLastError() != ERROR_SUCCESS): M; @7 O3 f0 n4 T6 |
{
9 d/ |6 x9 R/ _0 P+ [) t return false;9 x7 u1 R9 T1 V. v, p
}
5 [$ G4 o6 E" c4 J s6 e0 ]5 [ switch(kind)
+ D8 ^4 L* n1 h' \ a {case 1: ExitWindowsEx(EWX_FORCE|EWX_REBOOT,0); break; //重启; m; D1 J! `1 a# L% v8 \5 Z" X' t4 }
case 2: ExitWindowsEx(EWX_FORCE|EWX_SHUTDOWN|EWX_POWEROFF,0); break; //关机
" U% G U! s8 d( }7 d$ E* s case 3: ExitWindowsEx(EWX_FORCE|EWX_LOGOFF,0); break; //注销) Y, Z1 ~* C2 s9 H1 |
case 4: SetSystemPowerState(false, true); break; //休眠' V7 G; S2 t: b: c# T
case 5: SetSystemPowerState(true, true); break; //待机
/ M0 p( x: w4 t( P default: break;% C* {4 B8 ]+ |, c4 M
}7 Y# |0 ]1 G& L0 h4 _( w8 P
return true;</P>
0 K% e% u# [" o8 Y, d Q* g2 m1 a< >}</P> |
zan
|