Как разрешить администраторам редактировать файлы конфигурации моего приложения без повышения UAC? - PullRequest
3 голосов
/ 15 марта 2010

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

К сожалению, в Windows Server 2008 даже локальные администраторы больше не имеют прав администратора (из-за UAC), если они не запускают приложение с повышенными правами. Это вызвало жалобы пользователей, которые не могут использовать свой любимый текстовый редактор, чтобы открывать и сохранять изменения файлов конфигурации - они могут открывать файлы (так как каждый может читать), но не могут сохранить.

У кого-нибудь есть рекомендации относительно того, что мы можем сделать (если что) в настройках нашего приложения, чтобы упростить редактирование для администраторов Windows Server 2008?

Смежные вопросы: если администратор Windows Server 2008 хочет редактировать конфигурационный файл только для администраторов, как он обычно это делает? Вынужден ли он использовать текстовый редактор, который достаточно умен, чтобы автоматически повышать уровень при необходимости повышения, как это делает проводник Windows в ответ на ошибки, связанные с отказом в доступе? Запускает ли он редактор из окна командной строки с повышенными правами? Что-то еще?

Ответы [ 4 ]

5 голосов
/ 25 марта 2010

По моему мнению, администратор, которому не удается щелкнуть правой кнопкой мыши блокнот и выбрать «запуск от имени администратора», не должен быть администратором, но, ну ... в реальной жизни такие администраторы существуют.

UAC работает, отключая SID группы администраторов из маркера безопасности пользователя, пока вы не запустите программу с повышенными привилегиями.При работе в режиме без повышенных прав, к сожалению, нет способа использовать права администратора.

Один обходной путь, который, к сожалению, требует нетривиального объема работы, может быть:

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

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

4 голосов
/ 19 марта 2010

Для администраторов это не сложно. Откройте текстовый редактор с повышенными правами, откройте файл, сохраните, готово. Большинство людей, которые редактируют файлы конфигурации, уже привыкли к ритуалу. Unix люди делают это рефлексивно (с помощью sudo); это сложно только в Windows, потому что для некоторых пользователей это все еще немного незнакомая территория.

Реально, у них возникла бы та же проблема, если бы это был параметр реестра HKLM, за исключением того, что им пришлось бы повышать regedit или Powershell или все, что они обычно использовали для редактирования параметров реестра.

Если они не могут понять это, они могут полностью отключить UAC или уменьшить его на две метки, но я подозреваю, что если они не смогут понять, как открыть редактор с повышенными правами, это создаст больше проблем. чем это решит.

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

Если бы это не была служба, вы могли бы использовать% USERPROFILE% для хранения настроек конфигурации, но обычно службы запускаются с учетными данными другого пользователя, нежели обычная учетная запись сисадмина.

Приложения Dotnet могут выбрать сохранение информации в папке, возвращаемой Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData); людям может потребоваться повышение прав для записи в эту папку за пределами вашей службы, но если им не нравится ваш административный интерфейс, и им нравится их текстовый редактор, это то же самое, что и первоначальная проблема: им просто нужно научиться пользоваться UAC.

2 голосов
/ 19 марта 2010

По второму вопросу: для быстрого решения я добавляю блокнот на панель ярлыков Windows, щелкаю правой кнопкой мыши, запускаю от имени администратора, открываю файл, вносю изменения и сохраняю его.

0 голосов
/ 19 марта 2010

Мы перенесли все настройки нашего приложения в базу данных. См. Мой пост в блоге здесь. Вы можете легко увидеть, как можно создать веб-страницу, чтобы редактировать ее и иметь все разрешения в реальном времени в веб-приложении.

...