Назад | Перейти на главную страницу

Устаревшие приложения, требующие прав администратора в XP

У меня есть устаревшее приложение для Windows 95, которое нужно запускать от имени администратора. Это используется учащимися в школьном домене.

Мой предшественник настраивал для этой цели учетную запись администратора домена и пакетный сценарий «Запуск от имени ...» для запуска программы, но для этого по-прежнему требуется, чтобы учитель вводил пароль. Я бы хотел, чтобы учащиеся могли запускать приложение более простым способом, не давая им повышенных локальных прав или пароля для учетной записи администратора домена.

Как лучше всего это сделать?

Обычно я начинаю с поиска ключа HKLM, который использует программное обеспечение - надеюсь, что-то вменяемое - и использую regedt32 (обратите внимание, что обычный regedit не работает), предоставляя группе полный контроль над этим ключом реестра. Затем я предоставлю им полный контроль над установочным каталогом. В 99% случаев это решает проблемы с необходимым локальным администратором. Обычно на этом этапе, если не получается, я начинаю лоббировать обновление приложения, иногда это работает, иногда нет. Если вам действительно повезло, и это обычная программа, поиск в Google предоставит вам точные места, где вам нужно предоставить разрешения для работы без прав администратора.

Я надеюсь, вы имеете в виду, что вы пользователь в группе, которая находится в группе администраторов локального компьютера, и вы не выдаете учетную запись, которая является членом администраторов домена. Нет абсолютно никаких причин, по которым учетная запись должна быть членом группы администраторов домена. Если вы выдали учетную запись учителям, которые являются членами администраторов домена, я настоятельно рекомендую вам изменить это как можно скорее. Вы должны создать другую группу в домене и сделать эту группу членом группы локальных администраторов на компьютерах. У вас должна быть возможность добавить группу, которую вы создаете, в группу локальных администраторов с помощью сценария запуска, применяемого GPO.

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

В sysinternals tools filemon и regmon будут очень полезны в выяснении этого.

Если вы еще этого не сделали, попробуйте поискать в Google информацию об этой конкретной программе, возможно, кто-то уже решил проблему и исправил ее.

Посетите сайт неадмин началось с отличного Аарон Маргозис. Это отличный ресурс, поскольку вы запускаете ограниченных пользователей на XP. Некоторые приложения, которые хотят запускаться от имени администратора, нуждаются в дополнительных настройках, помимо уже полученных хороших ответов, чтобы иметь возможность работать от имени ограниченного пользователя.

При использовании активного каталога

  1. Перейдите в C: \ program files \ папку приложения win 95. На вкладке безопасности (свойства) предоставьте "Пользователи домена" Доступ для чтения и записи. Я обычно избегаю «Полный контроль».

  2. Откройте Regedit и перейдите в «ЛОКАЛЬНАЯ МАШИНА \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ» и найдите приложение win 95. На вкладке разрешений предоставьте "Пользователи домена" доступ для чтения и записи. Опять же, здесь я также стараюсь избегать «полного контроля».

  3. Вот необычный вариант - затем запустите приложение на минуту, как если бы вы были одним из пользователей (но вошли в систему как администратор), откройте несколько экранов и так далее. Затем закройте приложение и откройте поиск Windows. Поиск файлов, недавно измененных с помощью отметки времени, за время использования приложения. Вы можете найти некоторые .ini, которые некоторые программисты тогда (win 95) поместили в каталог Windows. Я захожу в их свойства и даю «Пользователи домена» «Полный доступ» .... НЕ В КАТАЛОГЕ WINDOWS ... ТОЛЬКО ФАЙЛ, ПРИНАДЛЕЖАЩИЙ ПРИЛОЖЕНИЮ.

Это должно делать свое дело. У меня это сработало несколько раз.

Упомянутые ранее инструменты 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 для этой цели.

В качестве быстрого решения вы можете обнаружить, что для запуска приложения в качестве члена локальной группы опытных пользователей будет достаточно разрешений. Опытные пользователи имеют права на изменение почти всех регистрационных и локальных файловых систем. Таким образом, это хороший показатель того, что если приложение работает как опытный пользователь, то его можно заставить работать как обычный пользователь, отредактировав реестр разрешений файловой системы.

Если вы измените пакетный сценарий для использования 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

Обратите внимание, что это кодирование не шифрование. Кто-то, кто знает, что делает, может легко расшифровать скрипт, чтобы получить пароль, что делает это решение непригодным для использования в некоторых настройках.