Программирование Windows - стоит оставить UAC включенным?

11

Каков рекомендуемый параметр контроля учетных записей (UAC) при разработке в Windows?

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

Брайан Р. Бонди
источник
"Это работает на моей машине!" Классический ответ от разработчика о проблеме с его программным обеспечением. Это может быть связано с различиями в правах доступа, аппаратных ресурсах или установленных библиотеках (а затем и некоторых). Просто постарайтесь знать о возможных ограничениях компьютера пользователя по сравнению с вашим и протестируйте, если сможете, перед выпуском. Потому что ... "Мы не отправляем вашу машину!"
Мартин Маат

Ответы:

16

Рекомендация (даже от Microsoft) состоит в том, чтобы оставить его включенным, а также запускать вашу IDE без изменений, когда это возможно.

Прежде всего, это заставляет программиста жить с теми же «неприятностями», что и у реального пользователя (если вы этого не знаете, правильно ли вы его программируете?).

Затем отключение UAC и работа в качестве администратора так же плохи, как и в Unix, чтобы работать как root (десятилетия здравого смысла покажут, почему это плохо).

Wizard79
источник
4
Windows не Linux, это не очень хорошее сравнение ..
Томас Бонини
9
@ Kop: работа с полными привилегиями хороша или плоха независимо от операционной системы ... Я не вижу различия между Windows и UNIX / Linux.
Wizard79
1
@Brian: до сих пор есть некоторые библиотеки, которым требуются права администратора (например, разработка для Azure), но подавляющее большинство задач можно выполнять без прав администратора.
Agent_9191
2
@Walter: вы можете создавать службы Windows без повышенных прав. Вам нужны повышенные права для установки / удаления службы. В любом случае вам никогда не следует устанавливать что-либо непосредственно из IDE, так что командная строка с повышенными правами работает лучше, так как это то, что в конечном итоге будут использовать ИТ-специалисты.
Agent_9191
2
@zneak: вы не правы. С технической точки зрения быть пользователем root-администратора (или администратора с повышенными правами с UAC) - это одно и то же. Конечно, вы не можете использовать команду форматирования в системном разделе, но это только выбор пользовательского интерфейса. Вы можете использовать стороннюю программу, которая форматирует стирание системного раздела, или что-то еще.
Wizard79
4

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

Желатин
источник
Проблема в том, что если у вас отключено UAC, у вас должна быть выделенная машина или виртуальная машина с включенным для тестов.
Wizard79
Даже если UAC выключен, ограниченная учетная запись все равно позволит вам проверить ограниченные привилегии.
Желатин
2
Вам необходимо протестировать как непривилегированные, так и привилегированные невыпущенные сценарии.
Бен Фойгт
4

Я работаю в Windows 7 и оставляю UAC включенным, и моя учетная запись не является настоящей учетной записью администратора. Поэтому, когда я сталкиваюсь с UAC, я должен ввести пароль администратора, чтобы продолжить. Даже под Vista я его держал. Я слышал, что многие разработчики говорят, что это мешает, но я еще не видел этого. Под Vista это было более серьезной проблемой, поскольку некоторые области были слишком ограничены.

Вопрос, который я всегда поднимаю, когда разработчики говорят, что UAC мешает, звучит так: «Что вы делаете, что продолжаете сталкиваться с этим?». Если вы пытаетесь манипулировать файлами в системных папках (Windows, Program Files, IIS-сайты), вы делаете что-то не так. Веб-сайты IIS могут существовать вне C: \ inetpub. Пользовательские базы данных SQL Server могут существовать вне Программных файлов. Единственный раз, когда вы должны регулярно видеть приглашение UAC, это установка и обновление приложений. Если вы видите это чаще, скорее всего, вы работаете против системы, а не с ней.

Agent_9191
источник
2
Visual Studio не позволит вам открыть проект веб-приложения, размещенного на IIS, если он не запущен с повышенными правами.
Хайнци
Чтобы расширить точку зрения @ Heinzi, если я запускаю две версии одного и того же приложения (например, две ветви SVN, каждая из которых хранится в другом месте), вам нужно VS studio, чтобы иметь возможность установить IIS в правильную папку, в которой вы работаете (т.е. последнее решение, которое вы открыли из этих двух). Без повышенных привилегий не только вам придется обновлять IIS вручную, вы рискуете забыть и протестировать совершенно другую версию приложения (в браузере), чем вы разрабатываете (в VS)
Flater
1

ИМХО, это сводится к тому, что ты делаешь.

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


источник
Как помогает отключение UAC? Разработка веб-приложений не должна требовать прав администратора, за исключением первоначальной настройки IIS. Для служб Windows требуются права администратора для запуска и остановки, но через одно командное окно, и у net start/stopвас есть одно приглашение UAC. В противном случае вы должны построить логику, чтобы у вас был бегун командной строки и бегун Win Service.
Agent_9191
Это не помогает в разработке, но устраняет раздражение UAC. Если он не нужен для симуляции низкого доступа, отключите его; в противном случае оставьте его
2
Я считаю, что отладка веб-приложения, размещенного в IIS, требует повышенных привилегий.
FinnNk