Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.21;
Скачать: CL | DM;

Вниз

Назначение привелегий AdjustTokenPriveleges   Найти похожие ветки 

 
max2057 ©   (2002-09-19 15:10) [0]

Кто-нибудь может показать как назначать привелигии под NT/2000
Лично мне нужно назначить SE_SHUTDOWN_PRIVELEGE,чтобы мой сервис
тушил машину. А то хелп по AdjustTokenPriveleges меня не радует.


 
Ученик ©   (2002-09-19 15:19) [1]

{ Project JEDI Code Library (JCL) }

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";

function EnableProcessPrivilege(const Enable: Boolean;
const Privilege: string): Boolean;
const
PrivAttrs: array [Boolean] of DWORD = (0, SE_PRIVILEGE_ENABLED);
var
Token: THandle;
TokenPriv: TTokenPrivileges;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, Token) then
begin
TokenPriv.PrivilegeCount := 1;
LookupPrivilegeValue(nil, PChar(Privilege), TokenPriv.Privileges[0].Luid);
TokenPriv.Privileges[0].Attributes := PrivAttrs[Enable];
AdjustTokenPrivileges(Token, False, TokenPriv, SizeOf(TokenPriv),
nil, PDWord(nil)^);
Result := GetLastError = ERROR_SUCCESS;
CloseHandle(Token);
end;
end;


 
max2057 ©   (2002-09-19 15:40) [2]

Спасибо сработало, но я сижу по Win2k и ExitWindowsEx(EWX_FORCE or EWX_SHUTDOWN,0) приводит к шатдауну, после которого появляется "А теперь питание можно отключить". Можно ли сделать
так чтобы тушил без всякого б.


 
Ученик ©   (2002-09-19 15:47) [3]

or EWX_POWEROFF


 
max2057 ©   (2002-09-19 16:00) [4]

Спасибо.


 
Ученик ©   (2002-09-20 09:25) [5]

procedure TForm1.Button1Click(Sender: TObject);
var
dwRemoteProcessID, dwRemoteThreadID : DWord;
hThread, hProcess : THandle;
begin
dwRemoteProcessID := Идентификатор процесса Explorer.exe;
if dwRemoteProcessID <> 0 then begin
hProcess := OpenProcess(PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION, False,
dwRemoteProcessID);
if hProcess <> 0 then try
hThread := CreateRemoteThread(hProcess, nil, 0,
GetProcAddress(GetModuleHandle("user32"), "ExitWindowsEx"),
Pointer(EWX_LOGOFF), 0, dwRemoteThreadID);
if hThread <> 0 then try
WaitForSingleObject(hThread, INFINITE);
finally
CloseHandle(hThread)
end
finally
CloseHandle(hProcess)
end
end
end;


 
max2057 ©   (2002-09-20 10:26) [6]

Так вот как этот dwRemoteProcessID := Идентификатор процесса Explorer.exe получить?
Это же не хендл, а как получить PID процесса, отличного от моего
я не нашел - я пытался сделать перечисление процессов, как ты уже понял, но меня посылают - "Отказано в доступе"


 
Ученик ©   (2002-09-20 10:32) [7]

function ExplorerProcessID : DWord;
begin
GetWindowThreadProcessID(FindWindow("Shell_TrayWnd", nil), Result)
end;


 
max2057 ©   (2002-09-20 10:48) [8]

А "Shell_TrayWnd" - это панелка внизу с кнопочкой Пуск?
Кстати а как машины тушит SHUTDOWN из Resource Kit?
К какмому сервису он коннектится и че он ему коммандует?


 
Ученик ©   (2002-09-20 11:09) [9]

А "Shell_TrayWnd" - это панелка внизу с кнопочкой Пуск?
Это панелька

Наверно, используется InitiateSystemShutdown



 
max2057 ©   (2002-09-20 11:32) [10]

В сервисе RemoteThread не работает,
а регистрация в Project JEDI Code Library (JCL) - платная?


 
Ученик ©   (2002-09-20 11:48) [11]

В сервисе возможно не работает FindWindow,
регистрация бесплатная и исходники тоже


 
max2057 ©   (2002-09-20 14:03) [12]

Ясно а как конектится к менеджеру сервисов на другой машине с целью проверки наличия/установки моего сервиса - опять не пускают!!! какие такие привелегии мне нужны?


 
ZZ ©   (2002-09-20 16:08) [13]

Ученик © (20.09.02 09:25)
Что это было такое 8)

какие такие привелегии мне нужны?
Почти никаких. (Надо иметь доступ к компу по сети и вроде быть юзером из этого-же домена)

В сервисе возможно не работает FindWindow
В интерактивном работает.


 
Ученик ©   (2002-09-20 16:26) [14]

>ZZ © (20.09.02 16:08)
А как думаете ?


 
ZZ ©   (2002-09-20 16:40) [15]

Ученик ©
Задам вопрос по другому - зачем ЭТО надо?


 
max2057 ©   (2002-09-20 16:53) [16]

>>ZZ - мне нужно чтобы сервис мог сделть Logoff текушего user"a
Ученик предложил сделать RemoteThread в Explorer"e но тут появилась проблема получения его PID"a (именно его родного,а не хендла).

>>Всем.Всем
А хочу я сделать типа reboot/logoff/shutdown demon.
Короче запрос на машину с целью запроса о наличии у меня уже работает. Теперь другой вопрос - как мне получить список компов моего домена причем чтоб работало и под NT и под Win2K(Это нужно для написания программки установки сервиса на компы-предпологается разумеется что это будет делать админ).
Можно ли использовать в Win2k Функции LAN Manager"a?



 
Ученик ©   (2002-09-20 17:00) [17]

>max2057 © (20.09.02 16:53)
Из { Project JEDI Code Library (JCL) } получение PIDa доcтал ?


 
max2057 ©   (2002-09-20 17:00) [18]

Совсем забыл - cервис интерактивный,но когда я вызываю предложенную учеником функцию в обычном приложении - все работает, а в сервисе - хрен,а SysErrorMessage(GetLastError) говорит "Неправильно задан параметр". Хотя и там и там- все один
в один - одна и та же функция. Ошибок синтакасич. и логич. нет - все один в один.


 
ZZ ©   (2002-09-20 17:04) [19]

мне нужно чтобы сервис мог сделть Logoff текушего user"a
Ученик предложил сделать

Ясно, а то я между строк еще читать не научился (или ослеп уже :)

Можно ли использовать в Win2k Функции LAN Manager"a?
вроде всегда можно было


 
max2057 ©   (2002-09-20 17:07) [20]

>Ученик
Пока нет.


 
max2057 ©   (2002-09-20 22:26) [21]

>>ZZ
так ты брат можешь мне помочь? :))


 
max2057 ©   (2002-09-22 12:24) [22]

>>Ученик.
PID я получаю(jclsysinfo.pas) , но в NT не работает поток в Explorer"e - он создается но ничего не делает.


 
ZZ ©   (2002-09-22 16:58) [23]

Ученик © (20.09.02 09:25)
У меня вот такой вопрос - чему будет равен 2ой параметр функции ExitWindowsEx в твоем примере?

max2057 ©
Так ты с вопросами определись... :)


 
Ученик ©   (2002-09-22 21:23) [24]

>ZZ © (22.09.02 16:58)
Произвольное число, второй параметр до XP по описанию игнорируется.

>max2057 © (22.09.02 12:24)
Проверил с сервисом на Windows 2000, Logoff работает.


 
max2057 ©   (2002-09-23 11:01) [25]

В вин2к может и работает(не проверял еще) но в NT говорит - "Нет доступа"
>>ZZ
вопрос тот же самый - logoff, работающий в NT и в Win2k


 
Ученик ©   (2002-09-23 14:15) [26]

>max2057 © (23.09.02 11:01)
И под NT тоже работает


 
max2057 ©   (2002-09-23 16:34) [27]

а у меня - не работает, может NT у меня бракованная?


 
Ученик ©   (2002-09-23 17:21) [28]

>max2057 © (23.09.02 16:34)
На какой операции Access Denied ?


 
max2057 ©   (2002-09-23 17:32) [29]

Щас поробую вспомнить: Значит так Explorer открываю на создание
потока, создаю поток. - все нормально никаких INVALID_HANDLE_VALUE,0 и всего прочег, что говорит об ошибке = а потом ничего не происходит



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

Текущий архив: 2002.11.21;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.017 c
14-69556
Slavan
2002-11-01 16:56
2002.11.21
Конвертация строки в время


3-69194
and1
2002-10-29 16:05
2002.11.21
oracle


1-69287
Explorer
2002-11-12 08:47
2002.11.21
EhLib для Д7


14-69537
vidiv
2002-11-01 14:16
2002.11.21
Осторожно! Linux!


3-69178
Nick-From
2002-10-31 13:13
2002.11.21
Соединение с БД