- 在线时间
- 1957 小时
- 最后登录
- 2024-6-29
- 注册时间
- 2004-4-26
- 听众数
- 49
- 收听数
- 0
- 能力
- 60 分
- 体力
- 40957 点
- 威望
- 6 点
- 阅读权限
- 255
- 积分
- 23862
- 相册
- 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)4 [% g& }) m7 d6 r4 J( c
{
6 I6 w7 ]8 f* G P HANDLE hToken;' A# Z! S2 J* |7 s% A7 R# o) _6 d3 g( b- Y
TOKEN_PRIVILEGES tkp; </P>. ~) `& f, T% U( J/ O+ L+ }$ f1 @) P
< > // Get a token for this process.+ ], W. W6 R4 M/ L; v. r, F6 M9 z
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
+ t' y# |( p1 [) g {4 b. q9 _1 B* O& [
return false;
/ J. m3 z0 s- A: G }</P>
' U+ ?7 v' v2 w2 |. E: g2 k< > // Get the LUID for the shutdown privilege.
6 u5 c1 X) F/ ^/ G2 p LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); </P>
3 T2 V8 N# ^ i. O# q< > tkp.PrivilegeCount = 1; // one privilege to set
l5 @1 {/ d+ ? tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;</P>' h; Z b6 \+ d; t0 A; U9 Q0 w' y: P7 i
< > // Get the shutdown privilege for this process.
4 ^5 V' @8 z x; d! { AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);</P>
5 x; s7 z! ^- |( P3 c< > if (GetLastError() != ERROR_SUCCESS)0 b3 }* q" f7 ?4 n
{
# l3 j$ g8 O+ B# k E- o: v return false;; a/ L0 S: N+ K0 h' ?& W/ L8 A
}
5 [* E2 t1 N+ a switch(kind)
$ i- E- w0 r) Q; U {case 1: ExitWindowsEx(EWX_FORCE|EWX_REBOOT,0); break; //重启
; T/ ~, r" q# Y case 2: ExitWindowsEx(EWX_FORCE|EWX_SHUTDOWN|EWX_POWEROFF,0); break; //关机2 U' R+ a1 y4 i) o% ^
case 3: ExitWindowsEx(EWX_FORCE|EWX_LOGOFF,0); break; //注销
, T# O% n' L E6 ^6 v5 j case 4: SetSystemPowerState(false, true); break; //休眠. c4 P, V c, Q% E& A6 @# L. X8 r
case 5: SetSystemPowerState(true, true); break; //待机
: V( _/ z$ q& v7 I% k default: break;/ r9 _: z, l$ H3 u. D0 h
}1 t. S: s( l6 I. I( C
return true;</P>
* \% O- e8 p5 ?& P/ d, r< >}</P> |
zan
|