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

Вниз

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

 
Кто б сомневался ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.337 c
2-1425049582
Гарик
2015-02-27 18:06
2017.01.15
Открыть приложение


2-1424793636
TYMON
2015-02-24 19:00
2017.01.15
Intraweb Подключение к базе через ADO


3-1311680290
Xmen
2011-07-26 15:38
2017.01.15
Уникальность соединения


15-1450878108
RWolf
2015-12-23 16:41
2017.01.15
ToolButton для выбора цвета шрифта


3-1308469793
she-wolf2829
2011-06-19 11:49
2017.01.15
запуск хранимых процедур





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