![]() |
Запуск приложения с обычными/пониженными правами
Сразу скажу: Разные похожие темы есть на форуме, но в них рассмотрено либо наследование прав, либо их повышение. Понижения или отключения наследования прав найти нигде не удалось.
Ситуация такая: определенная программа автоматически запускается с правами администратора при входе в виндовз (через плановщик винды), в свою очередь она может запускать другие программы, которые по умолчанию наследуют ее права (т.е. будут вызваны от имени администратора). А нужно чтобы дочерние программы запускались с обычными правами (т.е. как и большинство программ в системе), т.е. запретить RunAsInvoker (наследование прав от родительского процесса) Что пробовал: 1) Стандартная утилита RUNAS, которая запускает программы с разрешениями, отличными от тех, которые предоставляет текущая учетная запись Код:
RUNAS /trustlevel:<TrustLevel> program Elevation PowerToys, который как я понял основан на RUNAS тоже не выглядит работоспособным даже Elevation PowerToys последней версии. 2) Для повышения прав встречаются такие решения, может есть что-то подобное для понижения прав? Код:
C:\Windows\System32\cmd.exe /C set __COMPAT_LAYER=RunAsInvoker & start “” “C:\Program Files (x86)\raidcall\raidcall.exe” 3) Утилита PsExec с ключом -l [и ключом -d, чтобы не появлялись черные окна, которые ожидают закрытия запускаемой программы] Единственный вариант который работает, программа запускается с пониженными правами (хотелось бы конечно с нормальными) даже при том что родительский процесс имеет права администратора. Но что-то с передачей параметров запускаемому приложению проблемно. Например, запуская такой код появляется только окно MS Access, а база не загружается с указанными параметрами Код:
PsExec.exe -l -d "C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE" "C:\база данных.accdb" Upd: Похоже права понижаются слишком сильно, например, нет возможности создания пустой базы данных. Возможно ли повысить заниженные права до нормальных (чтобы Process Explorer показывал "средний обязательный уровень" вместо "низкий обязательный уровень")? Тэги: Force Run As Limited User, Force a program to run without administrator privileges, Runs a program as non-elevated user, Запуск приложения без повышенных прав (с правами обычного пользователя), Понижение прав приложений |
parkone, что мешает сделать еще одно задание планировщика без повышенных прав для запуска программ?
|
Vadikan, программа должна работать во всех приложениях, в том числе и тех, которые работают от имени администратора. Но дочерние процессы должны запускаться с обычными правами, иначе нарушается взаимодействие с другими приложениями, которые не имеют прав администратора. В целом: некоторым программам нужны эти права, другим нет, но винда дает нормальные средства только для повышения прав, понижение через одно место кое-как только работает.
|
Цитата:
|
Iska, разве что Марк Руссинович залогинится и даст несколько советов как это сделать )
На текущий момент вижу только вариант иметь какую-то предварительно запущенную с нормальными правами оболочку, которая сможет принимать команды на запуск дочерних процессов от управляющей программы (имеющей права администратора). Может кто подскажет чем можно воспользоваться для этих целей? |
parkone, тогда запускайте программу с обычными правами, а уже для запущенных из нее программ форсируйте повышение (ваш способ 2)
Просто мне непонятно, что это за мифическая программа, и почему решение должно быть именно таким, каким вы его сформулировали, но не нашли способов реализации. |
Vadikan, совсем не мифическая ) программа - AutoHotkey, в моем случае ее скрипты должны иметь доступ ко всем приложениями, а т.к. некоторые приложения запущены от имени администратора, то понятно что и AutoHotkey должен иметь эти же привелегии. Кроме прочего, скрипты ahk запускают дочерние процессы, которые наследуют права администратора, последнее как раз мешает. Часть проблемы решается обходным путем, эмулированием нажатий Win+1,2,3 и т.п. Но прикреплять все программы в панель задач - нонсенс.
Решение с повышением понятно не подходит, т.к. ahk запущена перманентно. Придется поковыряться еще с RUNAS и если не получится, то попробовать запустить nircmd как службу и попробовать сделать запуск через него, хотя службы похоже имеют еще большие права, но нужно попробовать ) |
parkone, здесь: Run as standard (limited) user - Scripts - AutoHotkey Community смотрели, пробовали?
|
Iska, попробую, спасибо!
То что по ссылке не заработало, но решение отсюда работает (на основе Task Scheduler Scripting Objects) позволяя запускать с параметрами и средним обязательным уровнем. Собственно то что я хотел попытаться сделать, но до использования Task Scheduler в качестве оболочки вряд ли бы додумался, не говоря о реализации )) Не разобрался только как добавить приоритет создаваемой задачи, вот так не работает Код:
objSettings.Priority := 6 Upd. Разобрался, просто перенес свойство Priority повыше, начало нормально работать ) Мозг перегрелся, но вопрос решен. Спасибо Iska и Vadikan за помощь! P.S. запуск с пониженными правами через командную строку и schtasks.exe |
Время: 21:49. |
Время: 21:49.
© OSzone.net 2001-