Форум: "Система";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
ВнизВырубание компа Найти похожие ветки
← →
gyry (2004-04-25 14:41) [0]Привет МАСТЕРА DEPLHI!!! Трабл маленький. Пишу
ShellExecute(Application.Handle,
Pchar("Open"),
Pchar("C:\Windows\System32\Rundll32.exe"),
Pchar("user,exitwindows"),
Pchar("C:\Windows\System32"),
SW_SHOWNORMAL);
А в ответ: "Ошибка при загрузке User. Не найден указанный модуль."
Может кто нить знает другие примеры выключения компа.
← →
Darmen (2004-04-25 19:29) [1]Слюшай сюда.
Данный код должен работать:Win32Check(ExitWindowsEx(EWX_SHUTDOWN,0));
Если что-то не так, пиши мне на
darmen_tubik@rambler.ru
← →
evvcom © (2004-04-26 08:15) [2]Скромный ник...
Вместо Pchar("Open") можно писать просто "Open" и т.д.
← →
antip (2004-04-26 09:52) [3]выключение компа под NT требует прав администратора...
const
SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
function NTSetPrivilege(const Privilege: string; bEnabled: Boolean = True): Boolean;
var
hToken: THandle;
TokenPriv: TOKEN_PRIVILEGES;
PrevTokenPriv: TOKEN_PRIVILEGES;
ReturnLength: Cardinal;
begin
Result := True;
// Only for Windows NT/2000/XP and later.
if not (Win32Platform = VER_PLATFORM_WIN32_NT) then Exit;
// obtain the processes token
if OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
try
// Get the locally unique identifier (LUID) .
if LookupPrivilegeValue(nil, PChar(Privilege),
TokenPriv.Privileges[0].Luid) then
begin
TokenPriv.PrivilegeCount := 1; // one privilege to set
case bEnabled of
True: TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
False: TokenPriv.Privileges[0].Attributes := 0;
end;
ReturnLength := 0; // replaces a var parameter
PrevTokenPriv := TokenPriv;
// enable or disable the privilege
AdjustTokenPrivileges(hToken, False, TokenPriv, SizeOf(PrevTokenPriv),
PrevTokenPriv, ReturnLength);
end;
finally
CloseHandle(hToken);
end;
end;
// test the return value of AdjustTokenPrivileges.
Result := GetLastError = ERROR_SUCCESS;
if not Result then
RaiseLastOSError;
end;
procedure SystemShutdown;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
if NTSetPrivilege(SE_SHUTDOWN_NAME) then
if not ExitWindowsEx(EWX_SHUTDOWN, 0) then
RaiseLastOSError;
end else
ExitWindowsEx(EWX_SHUTDOWN, 0);
end;
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c