IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Перезагрузка компьютера на Delphi, Немогу перезагрузить в Windows XP
#$# PaVeL #$#
сообщение 25.11.2005 14:03
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 91
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


mega_chok.gif[SIZE=14] Может кто подскажет: "Как перезагрузить комп програмно, из Delphi в OS Windows XP".А то уж совсем сума сошёл. wacko.gif
P.S.: Предпочтительно готовый участок кода! cool.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
#$# PaVeL #$#
сообщение 8.12.2005 11:55
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 91
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Чё правда не телепаты????????????????????????? blum.gif
А, я думал........... nea.gif
Ну да ладно Вот :
const
SE_CREATE_TOKEN_NAME = 'SeCreateTokenPrivilege';
SE_ASSIGNPRIMARYTOKEN_NAME = 'SeAssignPrimaryTokenPrivilege';
SE_LOCK_MEMORY_NAME = 'SeLockMemoryPrivilege';
SE_INCREASE_QUOTA_NAME = 'SeIncreaseQuotaPrivilege';
SE_UNSOLICITED_INPUT_NAME = 'SeUnsolicitedInputPrivilege';
SE_MACHINE_ACCOUNT_NAME = 'SeMachineAccountPrivilege';
SE_TCB_NAME = 'SeTcbPrivilege';
SE_SECURITY_NAME = 'SeSecurityPrivilege';
SE_TAKE_OWNERSHIP_NAME = 'SeTakeOwnershipPrivilege';
SE_LOAD_DRIVER_NAME = 'SeLoadDriverPrivilege';
SE_SYSTEM_PROFILE_NAME = 'SeSystemProfilePrivilege';
SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege';
SE_PROF_SINGLE_PROCESS_NAME = 'SeProfileSingleProcessPrivilege';
SE_INC_BASE_PRIORITY_NAME = 'SeIncreaseBasePriorityPrivilege';
SE_CREATE_PAGEFILE_NAME = 'SeCreatePagefilePrivilege';
SE_CREATE_PERMANENT_NAME = 'SeCreatePermanentPrivilege';
SE_BACKUP_NAME = 'SeBackupPrivilege';
SE_RESTORE_NAME = 'SeRestorePrivilege';
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
SE_DEBUG_NAME = 'SeDebugPrivilege';
SE_AUDIT_NAME = 'SeAuditPrivilege';
SE_SYSTEM_ENVIRONMENT_NAME = 'SeSystemEnvironmentPrivilege';
SE_CHANGE_NOTIFY_NAME = 'SeChangeNotifyPrivilege';
SE_REMOTE_SHUTDOWN_NAME = 'SeRemoteShutdownPrivilege';
SE_UNDOCK_NAME = 'SeUndockPrivilege';
SE_SYNC_AGENT_NAME = 'SeSyncAgentPrivilege';
SE_ENABLE_DELEGATION_NAME = 'SeEnableDelegationPrivilege';
SE_MANAGE_VOLUME_NAME = 'SeManageVolumePrivilege';

// Enables or disables privileges debending on the bEnabled
// Aktiviert oder deaktiviert Privilegien, abhangig von bEnabled

function NTSetPrivilege(sPrivilege: string; bEnabled: Boolean): 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;
Result := False;

// 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(sPrivilege),
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
raise Exception.Create(SysErrorMessage(GetLastError));
end;



begin
NTSetPrivilege(SE_SHUTDOWN_NAME,True);
ExitWindowsEx(EW_RESTARTWINDOWS,0);
End;

Ну вот собственно. blink.gif

Сообщение отредактировано: volvo - 5.11.2006 21:02
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
#$# PaVeL #$#   Перезагрузка компьютера на Delphi   25.11.2005 14:03
Fang   Вот так наверное: ExitWindowsEx(EWX_REBOOT,0...   25.11.2005 14:10
#$# PaVeL #$#   Чтобы перезагрузить Windows XP НАДО ПРИВИЛЕГИИ АДМ...   25.11.2005 14:15
Ozzя   Изменение привелегий { For some functions you...   25.11.2005 16:24
#$# PaVeL #$#   Ну с привелегиями вроде понял только какую использ...   29.11.2005 8:12
FreeMan   Вроде SeShutdownPrivilege Тут то, что нужно   29.11.2005 8:22
#$# PaVeL #$#   Не получается!!!! :nea: SeShutdow...   6.12.2005 14:12
volvo   Ну, так покажи, КАК ты делаешь? Телепатов у нас не...   6.12.2005 14:13
#$# PaVeL #$#   Чё правда не телепаты????????????????????????? :bl...   8.12.2005 11:55
volvo   #$# PaVeL #$#, попробуй ExitWindowsEx(E...   8.12.2005 12:05
#$# PaVeL #$#   Ну, понятно только перед тем как закрыть тему хоте...   12.12.2005 11:23
GoodWind   если не изменяет склероз, включает режим "фор...   12.12.2005 12:19
#$# PaVeL #$#   Чё то я незаметил разницы комп выключается очень б...   12.12.2005 12:48
GoodWind   а в чем тогда его смысл :blink: кто знает ?   12.12.2005 12:52
volvo   Замечу также что флаг EWX_FORCE необходим только д...   12.12.2005 13:06
GoodWind   информация с www.msdn.com   12.12.2005 13:16
#$# PaVeL #$#   Спасибо материал интересный. :good: Только, если...   13.12.2005 7:37


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 13.08.2025 10:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"