无忧启动论坛
标题:
PE下编程关机有什么特别的要求?
[打印本页]
作者:
wwwzhx
时间:
2009-2-20 22:29
标题:
PE下编程关机有什么特别的要求?
我用 DELPHI 在2003下写的程序应用下面代码,在XP和2003下已经可以实现重启和关闭电脑,
但是在PE下执行却失效了,没有反映,也没有报错 ,不知何故?是否精简文件的问题?
提升操作权限的函数:
procedure AdjustToken();
var
hdlProcessHandle: Cardinal;
hdlTokenHandle: Cardinal;
tmpLuid: Int64;
//tkpPrivilegeCount: Int64;
tkp: TOKEN_PRIVILEGES;
tkpNewButIgnored: TOKEN_PRIVILEGES;
lBufferNeeded: Cardinal;
Privilege: array[0..0] of _LUID_AND_ATTRIBUTES;
begin
hdlProcessHandle := GetCurrentProcess;
OpenProcessToken(hdlProcessHandle,
(TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY),
hdlTokenHandle);
// Get the LUID for shutdown privilege.
LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);
Privilege[0].Luid := tmpLuid;
Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1; // One privilege to set
tkp.Privileges[0] := Privilege[0];
// Enable the shutdown privilege in the access token of this
// process.
AdjustTokenPrivileges(hdlTokenHandle,
False,
tkp,
Sizeof(tkpNewButIgnored),
tkpNewButIgnored,
lBufferNeeded);
end;
关机代码:
AdjustToken;
ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE,0);
重启代码:
AdjustToken;
ExitWindowsEx(EWX_REBOOT OR EWX_FORCE,0);
作者:
zch11230
时间:
2009-2-20 22:51
确实很多程序在PE下面不能关机重启,XP的安装程序复制完后也重启不了,需要手动重启,不过GHOST可以重启哟,楼主可以看看.我是菜的,帮不了忙.
作者:
Pauly
时间:
2009-2-20 23:06
PECMD 啊,大家看看它得说明就知道了,它会拦截 ExitWindowsEx 调用的
作者:
zlgs
时间:
2009-2-21 01:41
老九不是有现成的吗
不用把时间花在这上面
欢迎光临 无忧启动论坛 (http://wuyou.net./)
Powered by Discuz! X3.3