Главная страница
    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.51 MB
Время: 0.008 c
1-69281
Nikolai_S
2002-11-12 10:02
2002.11.21
Из Дельфи 6 в Дельфи 5


6-69481
Pelot
2002-07-16 13:57
2002.11.21
Удаленное Выключение под ХР


7-69603
Infinity2
2002-09-21 02:32
2002.11.21
Надо залокать комп когда программы вылючена


7-69598
Mirovodin
2002-09-23 15:58
2002.11.21
Измерение быстродейсвия кода


1-69422
bobr12
2002-11-11 11:23
2002.11.21
Подключение к проекту файла помощи в формате HTML Help (*.chm)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский