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

Вниз

Запустить с обычными правами из под проги с админ. правами   Найти похожие ветки 

 
Кто б сомневался ©   (2016-02-02 14:50) [0]

Привет.

Подскажите где искать.

Есть программа, у нее админ. права (<requestedExecutionLevel level="requireAdministrator").
Нужно чтобы она запустила другую прогу, со стандартными правами (default security settings), без повышения до админа.


 
Кто б сомневался ©   (2016-02-02 15:06) [1]

Как это сделать программно из программы с админ правами?


 
Кто б сомневался ©   (2016-02-02 15:26) [2]

Поикал.
Данный функционал не поддерживается в Win. Но возможно это сделать через хак, копируя token шела, сделать его дубликат и запускать с этим токеном нужным процесс.
Есть ньюансы.

http://blogs.msdn.com/b/aaron_margosis/archive/2009/06/06/faq-how-do-i-start-a-program-as-the-desktop-user-from-an-elevated-app.aspx


 
Кто б сомневался ©   (2016-02-02 15:33) [3]

Проще наверное и правильнее сделать через второй процесс:
Обычный non-elevated процесс, запускает admin процесс, и ожидает команд от него. Затем запускает все что нужно без повышения до админа.


 
sniknik ©   (2016-02-02 15:45) [4]

ShellExecuteEx
+
https://www.google.ru/search?q=_RunWithReducedPrivileges&ie=utf-8&oe=utf-8&gws_rd=cr&ei=oaSwVpeuEMqkygOCvYTICw


 
sniknik ©   (2016-02-02 15:51) [5]

вот еще нашел, думаю ближе к теме
CreateProcessAsUser
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682429%28v=vs.85%29.aspx


 
sniknik ©   (2016-02-02 15:53) [6]

http://delphimaster.net/view/4-1304337418/


 
Кто б сомневался ©   (2016-02-02 15:56) [7]


> sniknik ©   (02.02.16 15:45) [4]

Там та же идея с токеном из Explorer.exe + CreateProcessWithTokenW что в [2].

А ShellExecuteEx - из под админа запустит также с админ. правами, я уже проверял.


 
Кто б сомневался ©   (2016-02-02 16:45) [8]

CreateProcessAsUser - там тоже нужен чужой токен.
Вобщем там же идея что и Explorer.exe + CreateProcessWithTokenW .

За помощь спасибо.


 
Eraser ©   (2016-02-02 21:17) [9]

 // Запрещаем вызов UAC диалога, запускаем с теми правами, какие есть.
 if not SetEnvironmentVariable("__COMPAT_LAYER", "RunAsInvoker") then
 begin
   Exit;
 end;

 try
   ZeroMemory(@PI, SizeOf(TProcessInformation));
   ZeroMemory(@SI, SizeOf(TStartupInfo));
   SI.cb := SizeOf(TStartupInfo);
   SI.wShowWindow := SW_NORMAL;

   bRet := CreateProcess(
     nil,
     PChar(sFile),
     nil,
     nil,
     False,
     NORMAL_PRIORITY_CLASS,
     nil,
     nil,
     SI,
     PI
   );

   if bRet then
   begin
     // Дожидаемся завершения процесса и выходим.
     WaitForSingleObject(PI.hProcess, INFINITE);

     CloseHandle(PI.hProcess);
     CloseHandle(PI.hThread);
   end;
 finally
   SetEnvironmentVariable("__COMPAT_LAYER", nil);
 end;


 
Eraser ©   (2016-02-02 21:54) [10]

Наверное, все таки, [9] не то. Но все зависит от целей, для которых нужен сабж.


 
han_malign ©   (2016-02-03 13:44) [11]


> CreateProcessAsUser - там тоже нужен чужой токен.

- штатный путь использования своего токена - CreateRestrictedToken, но там тоже всё весело - одной строкой не обойдешься...



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

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

Наверх




Память: 0.49 MB
Время: 0.024 c
15-1447436787
data
2015-11-13 20:46
2017.01.15
подскажите по my sql


2-1431020136
Zheksonz
2015-05-07 20:35
2017.01.15
Можно ли в поля Blob Graphic загружать jpg файлы?


15-1455628706
sniknik
2016-02-16 16:18
2017.01.15
Достали уже менять интерфейс... Мозила


3-1311770178
SQLEXPRESS
2011-07-27 16:36
2017.01.15
Ни кто не не желает в SQL размяться? Время исполнения


15-1454413847
Кто б сомневался
2016-02-02 14:50
2017.01.15
Запустить с обычными правами из под проги с админ. правами