Главная страница
    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.051 c
2-1422093481
Некто
2015-01-24 12:58
2017.01.15
Почему выводится неправильное число (указатели)?


2-1421055377
Боб
2015-01-12 12:36
2017.01.15
PostMessage


2-1428036109
Xmen
2015-04-03 07:41
2017.01.15
Работа с файлами которых имена в Unicode.


2-1425049582
Гарик
2015-02-27 18:06
2017.01.15
Открыть приложение


15-1441176402
ВладОшин
2015-09-02 09:46
2017.01.15
Ищу Text to Speech, бесплатно, использовать буду из ПО на Delphi





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