Форум: "Прочее";
Текущий архив: 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