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

Вниз

Маленький вопрос   Найти похожие ветки 

 
KygECHuK ©   (2006-11-14 09:31) [0]

Может ли  сервис с правами system запустить процесс от другого пользователя ?


 
Чапаев ©   (2006-11-14 09:40) [1]

Легко. Смотри в сторону LogonUser()+CreateProcessAs(), например.


 
KygECHuK ©   (2006-11-14 09:46) [2]

Вы это сами видели?


 
BiN ©   (2006-11-14 09:47) [3]


> Вы это сами видели?

А в чеим проблема?


 
Чапаев ©   (2006-11-14 09:55) [4]

Я это сам делал. Вас это беспокоит? Хотите поговорить об этом?


 
Колдун ©   (2006-11-14 09:56) [5]


> Чапаев ©   (14.11.06 09:55) [4]

сорцы в студию!


 
clickmaker ©   (2006-11-14 09:57) [6]


> [2] KygECHuK ©   (14.11.06 09:46)
> Вы это сами видели?

кто ж его увидит? Он же сервис


 
Чапаев ©   (2006-11-14 09:59) [7]

> [5] Колдун ©   (14.11.06 09:56)
Ага... Реально я от этого варианта отказался, не помню, почему. Вот работающий сейчас вариант.


 ActiveConsole:=WTSGetActiveConsoleSessionId;
 if not WTSQueryUserToken(ActiveConsole,UserToken)
   then begin
     if not CreateProcess(nil,
                          PChar(Format(""%s" yankeegohome "%s" "%s" %s",[ExtractFilePath(ParamStr(0))+"GetKey.prg",
                                                                         UserName,
                                                                         ExeName,
                                                                         Key])),
                          nil,
                          nil,
                          False,
                          0,
                          nil,
                          PChar(ExtractFilePath(ParamStr(0))),
                          SI,
                          PI)
       then begin
         MessageBox(0,PChar(SysErrorMessage(GetLastError)),"",MB_OK or MB_ICONSTOP or MB_SERVICE_NOTIFICATION);
       end
       else begin
         WaitForSingleObject(PI.hProcess,INFINITE);
         CloseHandle(PI.hThread);
         CloseHandle(PI.hProcess);
       end;
   end
   else begin
     FillChar(SI,SizeOf(SI),0);
     SI.cb:=SizeOf(SI);
     if not CreateProcessAsUser(UserToken,
                                nil,
                                PChar(Format(""%s" yankeegohome "%s" "%s" %s",[ExtractFilePath(ParamStr(0))+"GetKey.prg",
                                                                               UserName,
                                                                               ExeName,
                                                                               Key])),
                                nil,
                                nil,
                                False,
                                0,
                                nil,
                                PChar(ExtractFilePath(ParamStr(0))),
                                SI,
                                PI)
     then begin
       MessageBox(0,PChar(SysErrorMessage(GetLastError)),"",MB_OK or MB_ICONSTOP or MB_SERVICE_NOTIFICATION);
     end
     else begin
   //          Sleep(3000);
       CloseHandle(UserToken);
       WaitForSingleObject(PI.hProcess,INFINITE);
       CloseHandle(PI.hThread);
       CloseHandle(PI.hProcess);
     end;
   end;


 
KygECHuK ©   (2006-11-14 10:07) [8]

Ну вот развел на сорц провакационным вопросом :) Спасобо!


 
Колдун ©   (2006-11-14 10:11) [9]

Чапаев, а вообще какие условия должны выполняться, чтобы выполнить процесс программно с правами System?


 
Чапаев ©   (2006-11-14 10:12) [10]

> [9] Колдун ©   (14.11.06 10:11)
Самому иметь парва SYSTEM. :-D Если из SYSTEM выполнишь CreateProcess(), то дочерний процесс будет с правами SYSTEM.


 
Колдун ©   (2006-11-14 10:14) [11]

А как в винде получить эти права? Вот я админ за своей тачкой - так у меня права Администратора, а System - Это выше...


 
Чапаев ©   (2006-11-14 10:18) [12]

> Ну вот развел на сорц провакационным вопросом
Провокационным вопросом развёл лишь на провокационный вопрос. А на сорцы развёл просьбой сорцов. Читай ветку внимательно. :-D


> [11] Колдун ©   (14.11.06 10:14)
Ну речь первоначально о сервисе шла? Он, как правило, выполняется с такими правами.

Вообще сейчас меня другой вопрос занимает... Удастся ли:
1. Создать из службы процесс as user с наследованием хэндлов.
2. Передать ему токен системного пользователя.
3. Где нужно, олицетворять поток с системным пользователем.


 
KygECHuK ©   (2006-11-14 10:19) [13]

System не имеет прав на управление учетными записями


 
Чапаев ©   (2006-11-14 10:20) [14]

> [13] KygECHuK ©   (14.11.06 10:19)
Ась?


 
KygECHuK ©   (2006-11-14 10:24) [15]

Мысли в слух Ж)


 
Колдун ©   (2006-11-14 10:26) [16]

Дык че, касперский - сервис что ли?


 
Чапаев ©   (2006-11-14 10:37) [17]

Гыыыы... По слухам, там ещё и драйверов с полдесятка...



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

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

Наверх




Память: 0.51 MB
Время: 0.053 c
15-1163161494
syte_ser78
2006-11-10 15:24
2006.12.03
Пятничное открытие


15-1163666134
TJulia
2006-11-16 11:35
2006.12.03
Как устроены спам-фильтры?


15-1163150916
ASoft
2006-11-10 12:28
2006.12.03
Задуматься...


15-1163495507
iZEN
2006-11-14 12:11
2006.12.03
Sun выпустила Java по лицензии GPL v.2


2-1163620421
Magister Crazy
2006-11-15 22:53
2006.12.03
Проблемы со StringGrid