Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.06 c
2-1163334091
AlexanderMS
2006-11-12 15:21
2006.12.03
Прокрутить Memo и установить курсор.


2-1163862232
Vasiliy
2006-11-18 18:03
2006.12.03
Вывод на канву многострочного текста


15-1163485918
KygECHuK
2006-11-14 09:31
2006.12.03
Маленький вопрос


4-1153829366
sVic
2006-07-25 16:09
2006.12.03
Как определить владельца файла(NTFS)


2-1163673385
iamdanil
2006-11-16 13:36
2006.12.03
Сделать папку общей





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