Устаревшие приложения, требующие прав администратора в XP
У меня есть устаревшее приложение для Windows 95, которое нужно запускать от имени администратора. Это используется учениками в школьном домене.
Мой предшественник настроил для этой цели учетную запись администратора домена и пакетный сценарий "Запуск от имени…" для запуска программы, но для этого все же требуется, чтобы учитель ввел пароль. Мне бы хотелось, чтобы ученики могли проще запускать приложение, не предоставляя им повышенных локальных привилегий или пароля к учетной записи администратора домена.
Какой лучший способ сделать это?
7 ответов
Я надеюсь, что вы имеете в виду, что вы являетесь пользователем группы, которая входит в группу администраторов локального компьютера, и вы не выдаете учетную запись, которая является членом группы администраторов домена. Нет абсолютно никаких причин, по которым учетная запись должна быть членом группы администраторов домена. Если вы предоставили учетную запись учителям, которые являются членами администраторов домена, я настоятельно призываю вас изменить это как можно скорее. Вам следует создать другую группу в домене и сделать эту группу членом группы локальных администраторов на компьютерах. Вы должны иметь возможность добавить созданную вами группу в группу локальных администраторов с помощью сценария запуска, применяемого объектом групповой политики.
В любом случае вернемся к решению вопросов по программе. Вам может понадобиться выяснить, что делает приложение, для которого требуется административный доступ, а затем измените разрешения файловой системы и реестра, чтобы у студентов были эти привилегии.
Инструменты sysinternals filemon и regmon будут очень полезны для выяснения этого.
Если вы еще этого не сделали, попробуйте поискать в Google информацию об этой конкретной программе, возможно, кто-то другой уже решил проблему и исправил ее.
Обычно я начинаю с поиска ключа HKLM, который использует программное обеспечение - надеюсь, что-то вменяемого - и использования regedt32 (обратите внимание, что регулярный regedit не сработает) дает своей группе полный контроль над этим ключом реестра. Тогда я дам им полный контроль над установочной директорией. 99% времени это решает проблемы с необходимым локальным администратором. Обычно в этот момент, если это не сработает, я начинаю лоббировать, чтобы обновить приложение, иногда это работает, иногда нет. Если вам действительно повезло, и это обычная программа поиска, Google предоставит вам точные места, которые вам нужно дать разрешения для работы в качестве администратора.
В качестве быстрого исправления вы можете обнаружить, что для запуска приложения в качестве члена локальной группы "Опытные пользователи" будет достаточно разрешений. Опытные пользователи имеют права на изменение почти всех реестров и локальных файловых систем. Таким образом, это хороший признак того, что если приложение работает как опытный пользователь, его можно заставить работать как обычный пользователь, отредактировав реестр разрешений файловой системы.
Упомянутые ранее инструменты filemon и regmon были объединены в монитор процессов. Посмотрите на http://live.sysinternals.com/ для procmon.exe
9 раз из 10, это просто запись в HKLM\Software\vendor или c:\program files\vendor, но для сложных случаев вы захотите изучить монитор процесса и как отфильтровать его до конкретного исполняемого файла, который вы отслеживаете, и начните с фокусировки на операциях записи, а не на чтении (в противном случае у вас будет сотни тысяч записей).
Другой вариант - виртуализация приложений с использованием таких продуктов, как Thinapp (VMWare), App-V (Microsoft) или SVS (Altiris/Symantec). Несмотря на то, что я не использовал Altiris в глубине, я думаю, что есть бесплатная личная версия, которая позволяет вам протестировать ее и ознакомиться с используемыми методами. В Vista также есть виртуальный реестр и файловая система, но я никогда не использовал Vista для этой цели.
Если используется активный каталог
Перейдите в C:\program files\ папку с приложением win 95. На вкладке "Безопасность" (Свойства) укажите "Пользователи домена" Доступ для чтения и записи. Я обычно избегаю "полного контроля".
Откройте Regedit и перейдите к "ЛОКАЛЬНАЯ МАШИНА \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ" и найдите приложение win 95. На вкладке "Разрешение" укажите "Пользователи домена" доступ для чтения и записи. Опять же, здесь я также стараюсь избегать "полного контроля".
Вот необычный вариант - затем запустите приложение на минуту, как будто вы один из пользователей (но вошли в систему как администратор), откроете несколько экранов и так далее. Затем закройте приложение и откройте окно поиска. Поиск файлов, недавно измененных с помощью метки времени, в то время, когда вы использовали приложение. Вы можете найти некоторые.ini, которые некоторые программисты тогда (win 95) помещали в каталог windows. Я перехожу к их свойствам и даю "Пользователям домена" "Полный контроль".... НЕ В ДИРЕКЦИИ WINDOWS... ПРОСТО ФАЙЛ, КОТОРЫЙ ПРИНАДЛЕЖИТ ПРИЛОЖЕНИЮ.
Это должно делать свое дело. У меня это сработало несколько раз.
Если вы измените пакетный сценарий на использование PSExec (из Sysinternals) вместо "Запуск от имени", вы можете встроить пароль в сценарий вместо того, чтобы требовать от учителя ввода его. Я использую закодированный VBScript для этой цели.
'**Start Encode**
Const SET_PRIVELEGE_CMD = "%comspec% /c psexec -i -u User -p Password "
Set objWShell = CreateObject ("WScript.shell")
objWShell.run SET_PRIVELEGE_CMD & "c:\MyApplication.exe"
Для кодирования файла VBScript необходимо поместить текст "Начать кодирование" в виде комментария в сценарии перед любым кодом, а также загрузить и установить sce10en.exe от Microsoft. Как только это будет сделано, откройте командную строку и перейдите в папку, в которой установлено программное обеспечение для кодирования.
Usage: screnc [/?] [/s] [/f] [/xl] [/l ScriptLanguage] [/e DefaultExtension]
<source> <destination>
Encode embedded script.
/? - Help
/s - Silent: display no messages
/f - Force: allow file(s) overwrite (source == destination)
/xl - Exclude Language: does not add the language directive in asp files
/l ScriptLanguage -
Script Default Language: specify the default script language to be
used when encoding
/e DefaultExtension -
Default Extension: override actual file extension. Control the
encoder to be loaded.
<source>
The file to encode. It can have wildcard characters.
<destination>
The destination file. When <source> contains wildcard characters,
<destination> is the directory where to place the encoded
files; files will keep the same name. When <source> and
<destination> are the same /f must be used.
Example:
C:\Program Files\Windows Script Encoder>screnc C:\temp\MyScript.vbs C:\temp\MyScript.vbe
Обратите внимание, что это кодировка, а не шифрование. Кто-то, кто знает, что он делает, может легко декодировать скрипт, чтобы получить пароль, что делает это решение непригодным для использования в некоторых настройках.
Посетите сайт nonadmin, созданный отличным Аароном Маргосисом. Это отличный ресурс, поскольку вы разворачиваете ограниченных пользователей на XP. Некоторые приложения, которые хотят запускаться от имени администратора, нуждаются в дополнительной настройке, помимо хороших ответов, которые уже были даны, чтобы иметь возможность работать от имени ограниченного пользователя.