Hi moinky ...
Ich kann zwar kein VB, hier aber ein Codeschnipsel für Delphi,
vielleicht kannst Du es in VB portieren:
-----------------------------------------------------------------
function TForm1.WindowsDowner(flag:word): Boolean;
var
VInfo: TOSVersionInfo;
hToken: THandle;
tp: TTokenPrivileges;
dw: DWord;
begin
Result:=false;
VInfo.dwOSVersionInfoSize:=SizeOf(VInfo);
GetVersionEx(VInfo);
if VInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
begin // WinNT/Win2k
OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',
tp.Privileges[0].Luid);
tp.PrivilegeCount:=1;
tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
dw:=0;
AdjustTokenPrivileges(hToken, False, tp, 0,
PTokenPrivileges(nil)^, dw);
CloseHandle(hToken);
Result:=ExitWindowsEx(flag, 0);
end else
begin // Win95/98
Result:=ExitWindowsEx(flag, 0);
end;
end;
-----------------------------------------------------------------
Aufrufen kannst Du dann die Funktion so:
-----------------------------------------------------------------
WindowsDowner(EWX_POWEROFF Or EWX_FORCE);
-----------------------------------------------------------------
Gruß Ojo