Главная страница
    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.045 c
15-1448011257
Сергей Суровцев
2015-11-20 12:20
2017.01.15
Вот и про нас вспомнили


15-1432230427
engine
2015-05-21 20:47
2017.01.15
Не работает delphimaster.net


15-1451856604
Юрий
2016-01-04 00:30
2017.01.15
С днем рождения ! 4 января 2016 понедельник


8-1239693170
Miklek
2009-04-14 11:12
2017.01.15
Можно ли считывать часть большого BMP файла не считывая весь?


2-1426368587
SvetaZ1
2015-03-15 00:29
2017.01.15
вопрос по Case





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