Разрешить обычному пользователю запускать программу, требующую повышения уровня контроля учетных записей
Мне нужен стандартный или ограниченный пользователь Windows 7, чтобы иметь возможность запускать приложение (Fallout Mod Manager), для которого требуется повышение уровня контроля учетных записей. Я пробовал Application Compatibilty Toolkit, но это не сработало так, как задумано. Какие-либо предложения? Я использую локальную Windows 7 Ultimate, поэтому можно применять политики.
Я в основном хочу что-то вроде флага setuid в Unix.
1 ответ
Это выполнимо, но не легко объяснить.
Существует только три причины, по которым приложение запрашивает повышение прав при запуске:
- на вкладке 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, чтобы увидеть или изменить.