Re: power off
- From
- Alex Fedotov ()
- To
- Alexander Mingalev
- Date
- 2001-05-07T04:27:29Z
- Area
- SU.WINDOWS.NT.PROG
From: "Alex Fedotov" <alexf@3cube.com>
Alexander Mingalev wrote:
> как програмно выключить комп для nt?
> точнее, для этого нужна привелегия SE_SHUTDOWN_NAME,
> а какие вообще нужны уcловия для её получения?
SE_SHUTDOWN_NAME по умолчанию есть у Administrators и Power Users,
но изначально она выключена в токене процесса. Все что нужно сделать,
это включить ее с помощью AdjustTokenPrivileges:
HANDLE hToken = NULL;
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken))
return FALSE;
TOKEN_PRIVILEGES tkp;
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0);
CloseHandle(hToken);
> в msdn по нараcтающей AdjustTokenPrivileges -> CreateToken -> ...
> к тому же заголовочного файла Ntsecpkg.h в cреде vc6 нет...
> обьяcните plz, как это делаетcя или подcкажите, где можно поcмотреть
> примеры.
Если тебя интересует, как программно назначать привилегии, смотри
Q132958 в MSDN.
--
Alex Fedotov
--- ifmail v.2.15dev5
* Origin: 3Cube, Inc. (www.3cube.com) (2:5020/400)