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

15036
Thom Wiggers

Мне нужен стандартный или ограниченный пользователь Windows 7, чтобы иметь возможность запускать приложение (Fallout Mod Manager), для которого требуется повышение уровня контроля учетных записей. Я пробовал Application Compatibilty Toolkit, но это не сработало как задумано. Какие-либо предложения? Я использую локальную Windows 7 Ultimate, поэтому можно применять политики.

Я в основном хочу что-то вроде флага setuid в Unix.

4
Когда вы смогли воспользоваться инструментарием, щелкнули ли вы «Изменить настройки для всех пользователей»? Unfundednut 14 лет назад 0
Я использовал sdbinstall для развертывания изменений и просмотрел документы MSDN / Technet. asAdmin или asHighest не работают, потому что они запускают запрос, а asInvoker не будет работать, потому что ему нужны привилегии Thom Wiggers 14 лет назад 0
Удалось ли вам выяснить, почему приложение требует повышения прав? Например, если ему нужен доступ для чтения / записи к определенным папкам, вы можете решить эту проблему, изменив разрешения NTFS. nhinkle 13 лет назад 0
@nhinkle ловушка памяти (в процессе Fallout. (Fallout Script Extender)) Thom Wiggers 13 лет назад 0
Пользователь может запустить программу, но ему нужно будет ввести учетные данные учетной записи администратора, когда UAC запрашивает повышение прав. Если это не удовлетворительное решение, к сожалению, я не знаю достаточно, чтобы помочь дальше. :) Ben Richards 13 лет назад 0

1 ответ на вопрос

3
Ian Boyd

Это выполнимо, но не легко объяснить.

Существует только три причины, по которым приложение запрашивает повышение прав при запуске:

  • на вкладке Compatibilty есть «Запустить эту программу от имени администратора»
  • приложение имеет манифест (встроенный или внешний), который указывает requireAdministrator
  • есть обновление совместимости от Microsoft, которое пометило его как нужного администратора

Предполагая, что вы уже проверили вкладку совместимости, и приложение не требует администратора:

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

Создайте файл в том же каталоге, что и Fallout Mod Manager (я не знаю, как exeон называется, но я его назову FalloutModManager.exe:

FalloutModManager.exe FalloutModManager.exe.manifest

Этот новый manifestфайл, который вы создаете, представляет собой простой текстовый файл, содержащий xml, с записью манифеста, в которой говорится, что мы хотим запустить asInvoker, а не requireAdministrator :

FalloutModManager.exe.manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  <assemblyIdentity  version="1.0.0.0" processorArchitecture="X86" name="client" type="win32" />   <description>Poorly written Fallout Mod Manager fails on XP as standard user</description>   <!-- Disable file and registry virtualization, and don't require elevation --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> 

Наличие этого файла рядом с вашим исполняемым файлом называется « внешним манифестом ». Также возможно, что исполняемый файл имеет встроенный ресурс, который вам понадобится, например, инструмент Resource Hacker, чтобы увидеть или изменить.

Не создаст манифест, говорящий, не запускайте работу администратора, только если программа некорректно проявлена; но потерпите неудачу, если программа действительно делает что-то, что требует повышения прав? (Крюк памяти.) Dan Neely 13 лет назад 1
Если есть внутренний манифест, он будет иметь преимущество перед внешним манифестом. Для этого вам нужно отредактировать внутреннюю manfiest, указав `asInvoker`. Если программа делает что-то, требующее доступа администратора, то она завершится с ошибкой, но затем она также будет с ошибкой в ​​Windows XP со стандартным пользователем. Microsoft добавила несколько обходных путей, чтобы попытаться исправить ошибочные приложения, которые не срабатывают как обычный пользователь. Но лучше всего: если вы хотите, чтобы все пользователи могли изменять `HKLM` и` ProgramFiles`, предоставьте ** All Users ** полное разрешение для `HKLM` и` ProgramFiles`. Ian Boyd 13 лет назад 0
Боюсь, @DanNeely прав, и это не сработает. FOMM пытается вставить свои собственные библиотеки DLL в другую (возможно, Fallout3.exe) Thom Wiggers 13 лет назад 0
Я уверен, что есть вещи, которые FOMM может сделать, которые не требуют административного доступа. Помечая исполняемый файл `asInvoker`, вам больше не нужно повышать уровень, чтобы запустить программу. Возможно, вы не сможете выполнить все, что вы хотите, но, по крайней мере, теперь вы можете запускать исполняемый файл как обычный пользователь. Ian Boyd 13 лет назад 0
Что если вы скопировали Fallout3.exe в папку за пределами% Program Files%, если FOMM изменил копию, а затем запустил Fallout, используя этот exe вместо того, который находится внутри% Program Files%? Dan Henderson 9 лет назад 0