Запустите процесс как пользователь с ограниченными правами из повышенного сценария
У меня повышенная консоль, на которой запущены некоторые файлы bat. Работа этой консоли в режиме повышенных прав обязательна, чтобы она могла выполнять некоторые задачи, такие как управление сетевыми ресурсами и т. Д., Не запрашивая разрешения. Но иногда сценарии также должны запускать некоторые приложения, которые нежелательно запускать с повышенными правами. Поэтому мы хотим, чтобы наши повышенные летучие мыши запускали приложение в режиме без повышенных прав. Есть ли встроенный способ сделать это на Windows? Процессы были запущены командой DOS START до даты.
Кстати, машина представляет собой Windows 7 Ultimate Edition x64.
Я знаю, что эта проблема уже обсуждалась программно во многих вопросах ( здесь собраны многие из них), но наши требования - это скрипты bat, работающие на cmd, и любой автономный исполняемый файл, который может помочь в наших задачах, например, nircmd, 7z и т. Д.
Пояснение: у нас уже есть запланированное задание, которое запускает консоль с повышенными правами, и повышение уровня консоли не является проблемой этого ответа.
2 ответа
Встроенный способ Windows: START RUNAS ...
позволяет запускать процесс как пользователь с ограниченными правами. Вот пример:
runas /trustlevel:0x20000 cmd.exe
В любом случае, существуют некоторые внутренние различия между разрешениями на выполнение процесса, выполняемого таким образом, и другим, запускаемым из пользовательского интерфейса с включенным UAC (explorer.exe через обычное взаимодействие с пользователем, я имею в виду выполнение из файлового браузера или из меню "Пуск").
- В процессе, запущенном через runas (справа), мы пропустили некоторые права доступа:
- В процессе, запущенном через runas (справа), у администраторов есть некоторые разрешения, установленные для этого процесса:
Путь к сторонним приложениям: мы можем достичь нашей цели, используя PSExec, автономный исполняемый файл, который мы можем найти на PSTools от Windows Sysinternals. Вот пример:
psexec -l -d cmd.exe
Я очень глубоко изучил проблему и не заметил разницы ни в рабочих разрешениях, ни в флагах безопасности.
PsExec использует API CreateRestrictedToken для создания контекста безопасности, называемого токеном, который представляет собой урезанную собственную версию, удаляя административные привилегии и членство в группах. После создания токена, похожего на тот, который Windows назначает обычным пользователям, Process Explorer вызывает CreateProcessAsUser для запуска целевого процесса с новым токеном.
Это лучшие выводы, которые мне удалось получить после многих часов исследований; Любой, кто может предоставить более подробную информацию, будет приветствоваться.
На самом деле не моя область знаний, но будет START RUNAS ...
или возможно AT
отвечать всем требованиям?