Главная страница
    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.45 MB
Время: 0.003 c
8-11636
Sergo1
2003-08-05 15:56
2003.12.04
Рисование на рисунке.


6-11660
GreySerg
2003-10-08 18:32
2003.12.04
Как с помощью indy idHTTP визуально отображать закачку ?


6-11681
Recruit
2003-10-06 07:48
2003.12.04
NMPOP3.GetSummary в NMPOP3.Summary.Subject абракадабра?


4-11725
DmitryIPAC
2003-10-06 13:55
2003.12.04
Помогите


6-11649
Peter
2003-10-09 16:04
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский