Форум: "Система";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизLockStation и PowerOff в NT4 Найти похожие ветки
← →
-=GaLaN=- © (2004-01-23 13:54) [0]У меня два вопроса.
1) Каким образом можно сделать LockStation в NT4 программно? Вызов
ShellExecute(0, "open", Pchar("rundll32.exe"), Pchar("USER32.DLL,LockWorkStation"), nil, SW_ShowNormal);
не помогает, ибо такая функция есть только в NT5 и выше. Но ведь сам windows может сделать LockStation! Как?
2) Перед вызовом:
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
как обычно получаем привелегии:
procedure GetPriv;
var
hToken: THandle;
tkp: TTokenPrivileges;
tkpo: TTokenPrivileges;
zero: DWORD;
begin
zero:=0;
if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin
MessageBox(0, PChar("Error"), "OpenProcessToken() Failed", MB_OK );
Exit;
end;
if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin
MessageBox(0, PChar("Error"), "OpenProcessToken() Failed", MB_OK );
Exit;
end;
if not LookupPrivilegeValue(nil, "SeShutdownPrivilege", tkp.Privileges[0].Luid) then begin
MessageBox(0, PChar("Error"), "LookupPrivilegeValue() Failed", MB_OK );
Exit;
end;
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, tkp, SizeOf(TTokenPrivileges), tkpo, zero);
end;
И все это прекрасно работает в том случае, если запуск идет от Администратора или пользователя с его правами. Но если прав администратора нет, завершение работы не работает, несмотря на то, что сама Windows через Turn Off Computer может компьютер выключить. Как же быть?
← →
-=GaLaN=- © (2004-02-07 15:48) [1]Странно. Неужели проблемы _невозможно_ решить?
← →
-=GaLaN=- © (2004-02-13 16:19) [2]Мда... :(
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.036 c