请问在NT/XP/2K下如何使应用程序拥有SE_SHUTDOWN_NAME Privilege(关机权限)﹐因为在NT/2K/XP下﹐仅使用ExitWindowsEx()无法达到关机目标。
解决方案 »
- 想实现类似于QQ天气预报那种鼠标移动到天气图标显示出窗体form1移出则消失
- Indy控件抛出异常:Connection Closed Gracefully
- 私活做完了,散分!!!!
- 急!!!对acsess写数据时遇到的问题.
- delphi http访问问题,高手进(急)
- 如何把ToolBar上的几个按钮中的一个放在ToolBar的最右边?
- 紧急求救:如何将sql查询的票据结果按所需的子段显示在另一个表单的显示控件上
- delphi5里,怎样创建有两个以上unit的project?
- 我该如何得得到系统的当前月份呢
- 在Delphi当中有没有象VB中的DATEADD这样的函数!!!!
- 大家国庆快乐!小弟有一问想请教大家,是关于bpl的
- 求代码, BitBlt函数如何使用?
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject); private
{ Private declarations }
procedure AdjustToken;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.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); LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);
Privilege[0].Luid := tmpLuid;
Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1;
tkp.Privileges[0] := Privilege[0];
AdjustTokenPrivileges(hdlTokenHandle,
False,
tkp,
Sizeof(tkpNewButIgnored),
tkpNewButIgnored,
lBufferNeeded); end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AdjustToken;
ExitWindowsEx((EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), $FFFF);
end;end.