Nachtrag:
Delphi-Quellcode:
function EnableShutDownPrivilege: Boolean;
var
vi: TOSVersionInfo;
hToken: THandle;
tp: TTokenPrivileges;
h: DWord;
begin
result := False;
vi.dwOSVersionInfoSize := SizeOf(vi);
GetVersionEx(vi);
if vi.dwPlatformId = VER_PLATFORM_WIN32_NT
then // Windows NT
begin
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(
nil, '
SeShutdownPrivilege',
tp.Privileges[0].Luid);
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
h := 0;
result := AdjustTokenPrivileges(hToken, False,
tp, 0,
PTokenPrivileges(
nil)^, h);
CloseHandle(hToken);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if EnableShutDownPrivilege
then
if not InitiateSystemShutdown('
HEPU',
nil, 0, True, False)
then
ShowMessage(SysErrorMessage(GetlastError));
end;
GetLastError liefert mit immer:
Zitat:
Der Netzwerkpfad wurde nicht gefunden
Auch wenn ich den Rechnernamen so "\\HEPU" angebe. Rechner befindet sich in der gleichen Arbeitsgruppe.