Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.12.04;
Скачать: [xml.tar.bz2];

Вниз

Shut down the computer (2k, XP)   Найти похожие ветки 

 
KADAN   (2003-10-07 21:29) [0]

Думаю, из названия темы ясно, что мне нужно. Никак не могу разобраться с функцией AdjustTokenPrivilegies, или как она там звучит... в общем помогите мне выключить комп из w2k и XP.


 
Ihor Osov'yak   (2003-10-08 01:15) [1]

function SetPrivilege(Privilege: PChar;
EnablePrivilege: Boolean;
out PreviousState: Boolean): DWORD;
var
Token: THandle;
NewState: TTokenPrivileges;
Luid: TLargeInteger;
PrevState: TTokenPrivileges;
Return: DWORD;
begin
PreviousState := True;
if ((GetVersion() and $80000000) <> 0) then
begin
// Win9x
Result := ERROR_SUCCESS;
exit;
end;

// NT4, W2K, XP

if not OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, Token) then
begin
Result := GetLastError();
exit;
end;

try
if not LookupPrivilegeValue(nil, Privilege, Luid) then
begin
Result := GetLastError();
exit;
end;

NewState.PrivilegeCount := 1;
NewState.Privileges[0].Luid := Luid;
if EnablePrivilege then
NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
NewState.Privileges[0].Attributes := 0;

if not AdjustTokenPrivileges(Token, False, NewState,
SizeOf(TTokenPrivileges), PrevState, Return) then
Result := GetLastError()
else
begin
Result := ERROR_SUCCESS;
PreviousState :=
(PrevState.Privileges[0].Attributes and SE_PRIVILEGE_ENABLED <> 0);
end;
finally
CloseHandle(Token);
end;
end;

procedure doShutdownNT;

var
oldFl: boolean;
begin
SetPrivilege("SeShutdownPrivilege", true, oldFl);
ExitWindowsEx(EWX_REBOOT, 0);
SetPrivilege("SeShutdownPrivilege", oldFl, oldFl);
end;


 
Ihor Osov'yak   (2003-10-08 01:17) [2]

сорри

EWX_REBOOT -> EWX_SHUTDOWN :-)


 
NAlexey   (2003-10-08 08:54) [3]

>Ihor Osov"yak ©
А вот интересно, если запустить это с например гостевой учетной записи, сработает?


 
Игорь Шевченко   (2003-10-08 10:14) [4]

NAlexey © (08.10.03 08:54)

Не сработает, если только кто-то сдуру не назначил гостевой записи привилегию SE_SHUTDOWN_NAME. А если назначил - гнать таких в три шеи.


 
doomin   (2003-10-08 10:55) [5]

http://www.dragonsoft.spb.ru/file_rep/delphi/winexit.zip
компонента, в ней все работает на всех ОС. Если надо для гостя, то нужно использовать runas для того чтобы запускать процесс от имени пользователя, имеющего права


 
FireHack   (2003-10-08 12:03) [6]

А вот еще вдогонку для любой оси:


function isWin9x:Bool; {True=Win9x}{False=NT}
asm
xor eax, eax
mov ecx, cs
xor cl, cl
jecxz @@quit
inc eax
@@quit:
end;

procedure ExitWindows(Flags:Cardinal);
var
Handle,Ph: THandle;
pid : DWORD;
luid : TLargeInteger;
priv : TOKEN_PRIVILEGES;
privres : TOKEN_PRIVILEGES;
begin
if not IsWin9x then
begin
pid:=GetCurrentProcessId;
ph := OpenProcess(PROCESS_ALL_ACCESS,false,pid);
if OpenProcessToken(ph,TOKEN_ADJUST_PRIVILEGES,handle) then
if LookupPrivilegeValue(nil,"SeShutdownPrivilege",luid) then
begin
priv.PrivilegeCount:=1;
priv.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
priv.Privileges[0].Luid:=luid;
AdjustTokenPrivileges(handle,false,priv,0,nil,pid);
end;
end;
ExitWindowsEx(Flags ,0);
end;




Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.12.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.013 c
11-11600
Kladov
2003-03-10 19:14
2003.12.04
Версия 1.70


6-11650
Alexx_AI
2003-10-10 16:34
2003.12.04
Программно в сеть W2000 XP


4-11751
MrNoName
2003-10-11 13:03
2003.12.04
Проблема с ShellAPI


9-11577
Vin_Ghost
2003-05-20 23:18
2003.12.04
алгоритм поиска пути


6-11655
Yrtimd
2003-10-09 02:43
2003.12.04
Терминатор Интернет-соединения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский