Запустите процесс как пользователь с ограниченными правами из повышенного сценария

У меня повышенная консоль, на которой запущены некоторые файлы 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 (справа), мы пропустили некоторые права доступа: Снимок экрана Process Explorer, показывающий различия в разрешениях на выполнение
  • В процессе, запущенном через runas (справа), у администраторов есть некоторые разрешения, установленные для этого процесса: Снимок экрана Process Explorer, показывающий различия в правах доступа пользователей к процессам

Путь к сторонним приложениям: мы можем достичь нашей цели, используя PSExec, автономный исполняемый файл, который мы можем найти на PSTools от Windows Sysinternals. Вот пример:

psexec -l -d cmd.exe

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

Из блогов Microsoft Technet:

PsExec использует API CreateRestrictedToken для создания контекста безопасности, называемого токеном, который представляет собой урезанную собственную версию, удаляя административные привилегии и членство в группах. После создания токена, похожего на тот, который Windows назначает обычным пользователям, Process Explorer вызывает CreateProcessAsUser для запуска целевого процесса с новым токеном.

Это лучшие выводы, которые мне удалось получить после многих часов исследований; Любой, кто может предоставить более подробную информацию, будет приветствоваться.

На самом деле не моя область знаний, но будет START RUNAS ... или возможно AT отвечать всем требованиям?

Другие вопросы по тегам