Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 8 и 8.1 » Доступ - [решено] Запуск приложения с обычными/пониженными правами

Ответить
Настройки темы
Доступ - [решено] Запуск приложения с обычными/пониженными правами

Новый участник


Сообщения: 18
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: parkone
Дата: 14-01-2014
Сразу скажу: Разные похожие темы есть на форуме, но в них рассмотрено либо наследование прав, либо их повышение. Понижения или отключения наследования прав найти нигде не удалось.

Ситуация такая: определенная программа автоматически запускается с правами администратора при входе в виндовз (через плановщик винды),
в свою очередь она может запускать другие программы, которые по умолчанию наследуют ее права (т.е. будут вызваны от имени администратора).
А нужно чтобы дочерние программы запускались с обычными правами (т.е. как и большинство программ в системе), т.е. запретить RunAsInvoker (наследование прав от родительского процесса)

Что пробовал:

1) Стандартная утилита RUNAS, которая запускает программы с разрешениями, отличными от тех, которые предоставляет текущая учетная запись
Код: Выделить весь код
RUNAS /trustlevel:<TrustLevel> program
/showtrustlevels  displays the trust levels that can be used as arguments to /trustlevel.
/trustlevel       <Level> should be one of levels enumerated in /showtrustlevels.
Говорят что работает, но моя попытка понизить права не удалась.
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, Запуск приложения без повышенных прав (с правами обычного пользователя), Понижение прав приложений

Отправлено: 01:52, 14-01-2014

 

(*.*)


Сообщения: 36570
Благодарности: 6700

Профиль | Сайт | Отправить PM | Цитировать


parkone, что мешает сделать еще одно задание планировщика без повышенных прав для запуска программ?

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 10:07, 14-01-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


Vadikan, программа должна работать во всех приложениях, в том числе и тех, которые работают от имени администратора. Но дочерние процессы должны запускаться с обычными правами, иначе нарушается взаимодействие с другими приложениями, которые не имеют прав администратора. В целом: некоторым программам нужны эти права, другим нет, но винда дает нормальные средства только для повышения прав, понижение через одно место кое-как только работает.

Отправлено: 12:47, 14-01-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата parkone:
но винда дает нормальные средства только для повышения прав, понижение через одно место кое-как только работает. »
Это Ваша цель достаточно специфична. Ничто не мешает Вам в этом случае написать свой «RunAsNormalUser.exe».

Отправлено: 13:29, 14-01-2014 | #4


Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, разве что Марк Руссинович залогинится и даст несколько советов как это сделать )

На текущий момент вижу только вариант иметь какую-то предварительно запущенную с нормальными правами оболочку, которая сможет принимать команды на запуск дочерних процессов от управляющей программы (имеющей права администратора). Может кто подскажет чем можно воспользоваться для этих целей?

Последний раз редактировалось parkone, 14-01-2014 в 14:10.


Отправлено: 14:05, 14-01-2014 | #5


(*.*)


Сообщения: 36570
Благодарности: 6700

Профиль | Сайт | Отправить PM | Цитировать


parkone, тогда запускайте программу с обычными правами, а уже для запущенных из нее программ форсируйте повышение (ваш способ 2)

Просто мне непонятно, что это за мифическая программа, и почему решение должно быть именно таким, каким вы его сформулировали, но не нашли способов реализации.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 17:09, 14-01-2014 | #6


Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


Vadikan, совсем не мифическая ) программа - AutoHotkey, в моем случае ее скрипты должны иметь доступ ко всем приложениями, а т.к. некоторые приложения запущены от имени администратора, то понятно что и AutoHotkey должен иметь эти же привелегии. Кроме прочего, скрипты ahk запускают дочерние процессы, которые наследуют права администратора, последнее как раз мешает. Часть проблемы решается обходным путем, эмулированием нажатий Win+1,2,3 и т.п. Но прикреплять все программы в панель задач - нонсенс.
Решение с повышением понятно не подходит, т.к. ahk запущена перманентно.
Придется поковыряться еще с RUNAS и если не получится, то попробовать запустить nircmd как службу и попробовать сделать запуск через него, хотя службы похоже имеют еще большие права, но нужно попробовать )

Отправлено: 17:41, 14-01-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


parkone, здесь: Run as standard (limited) user - Scripts - AutoHotkey Community смотрели, пробовали?
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:28, 14-01-2014 | #8


Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, попробую, спасибо!

То что по ссылке не заработало, но решение отсюда работает (на основе Task Scheduler Scripting Objects) позволяя запускать с параметрами и средним обязательным уровнем. Собственно то что я хотел попытаться сделать, но до использования Task Scheduler в качестве оболочки вряд ли бы додумался, не говоря о реализации ))
читать дальше »

Код: Выделить весь код
RunAsUser(Target, Arguments, WorkingDirectory)
{
static TASK_TRIGGER_REGISTRATION := 7 ; trigger on registration.
static TASK_ACTION_EXEC := 0 ; specifies an executable action.
static TASK_CREATE := 2
static TASK_RUNLEVEL_LUA := 0
static TASK_LOGON_INTERACTIVE_TOKEN := 3
objService := ComObjCreate("Schedule.Service")
objService.Connect()

objFolder := objService.GetFolder("\")
objTaskDefinition := objService.NewTask(0)

principal := objTaskDefinition.Principal
principal.LogonType := TASK_LOGON_INTERACTIVE_TOKEN ; Set the logon type to TASK_LOGON_PASSWORD
principal.RunLevel := TASK_RUNLEVEL_LUA ; Tasks will be run with the least privileges.

colTasks := objTaskDefinition.Triggers
objTrigger := colTasks.Create(TASK_TRIGGER_REGISTRATION)
endTime += 1, Minutes ;end time = 1 minutes from now
FormatTime,endTime,%endTime%,yyyy-MM-ddTHH`:mm`:ss
objTrigger.EndBoundary := endTime
colActions := objTaskDefinition.Actions
objAction := colActions.Create(TASK_ACTION_EXEC)
objAction.ID := "7plus run"
objAction.Path := Target
objAction.Arguments := Arguments
objAction.WorkingDirectory := WorkingDirectory ? WorkingDirectory : A_WorkingDir
objInfo := objTaskDefinition.RegistrationInfo
objInfo.Author := "7plus"
objInfo.Description := "Runs a program as non-elevated user"
objSettings := objTaskDefinition.Settings
objSettings.Priority := 6 ; здесь работает
objSettings.Enabled := True
objSettings.Hidden := False
objSettings.DeleteExpiredTaskAfter := "PT0S"
objSettings.StartWhenAvailable := True
objSettings.ExecutionTimeLimit := "PT0S"
objSettings.DisallowStartIfOnBatteries := False
objSettings.StopIfGoingOnBatteries := False
; objSettings.Priority := 6 ; здесь выдает ошибку
objFolder.RegisterTaskDefinition("", objTaskDefinition, TASK_CREATE , "", "", TASK_LOGON_INTERACTIVE_TOKEN )
}


Не разобрался только как добавить приоритет создаваемой задачи, вот так не работает
Код: Выделить весь код
objSettings.Priority := 6
В свойстве TaskDefinition.Settings по документации присутствует свойство Priority

Upd. Разобрался, просто перенес свойство Priority повыше, начало нормально работать ) Мозг перегрелся, но вопрос решен. Спасибо Iska и Vadikan за помощь!

P.S. запуск с пониженными правами через командную строку и schtasks.exe

Последний раз редактировалось parkone, 16-01-2014 в 17:11.


Отправлено: 18:32, 14-01-2014 | #9



Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 8 и 8.1 » Доступ - [решено] Запуск приложения с обычными/пониженными правами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Запуск проги с правами администратора DeepWaters Хочу все знать 1 08-08-2013 11:25
Redhat/Fedora - Запуск Apache с правами root NetWolf Общий по Linux 5 28-05-2010 17:46
Доступ - Запуск DOS приложения и вывод на печать с правами пользователя ss777 Microsoft Windows 2000/XP 0 27-06-2008 07:30
Приложения с повышенными правами shefford Microsoft Windows NT/2000/2003 3 08-12-2007 21:07
Запуск програм с правами администратора Harkalada Программирование и базы данных 1 17-10-2003 09:54




 
Переход