Обновлять: Поскольку машина разработки перешла на Vista, теперь я автоматически тестирую как стандартный пользователь. И с постепенным отказом от XP этот вопрос больше не так актуален.
Начиная с требований к логотипу Windows 2000, Microsoft требует, чтобы приложения запускались от имени обычного пользователя. Как и все остальные, я всегда запускал свой рабочий стол как администратор. И, как любой разработчик: я вхожу в систему, разрабатываю, запускаю и тестирую как административный пользователь.
Теперь, когда я получил новую поддержку для поддержки стандартных пользователей, я тестировал свои приложения, запустив их как обычный пользователь - либо через RunAs, либо перезапустив мое приложение с обычными правами, используя [SaferCreateLevel][1] / [SaferComputeTokenFromLevel][2], если оно обнаружило, что оно работает как администратор. Я быстро вижу, как часто некоторые из моих приложений терпят неудачу в Windows XP в качестве стандартного пользователя (из-за моей собственной глупости). Я также вижу, как эти же приложения отлично работают под Vista (благодаря многочисленным прокладкам, исправляющим мои ошибки за меня).
В стороне: Парадоксально, что приложения с большей вероятностью будут запускаться в Vista как обычный пользователь, чем в XP.
Вопрос в том, тестируете ли вы свои приложения на совместимость со стандартными пользователями? Вы разрабатываете как стандартный пользователь на XP? Вы игнорируете доступ стандартного пользователя и надеетесь на лучшее?
Я попытался, в качестве бонуса, перезапустить мое приложение как ограниченный пользователь (а не как обычный пользователь). Даже не всплывает - Windows говорит, что не удалось инициализировать. Так что есть область будущих исследований с моей стороны: сделать приложение даже для ограниченного пользователя.
Я специально обращался к стандартным пользователям XP, а не Vista, чтобы подтвердить, что Vista ничем не отличается от XP в том, что касается совместимости. И любой, кто говорит, что их приложение не работает в Vista, должен понимать, что оно не работает и в XP.
«Как и все остальные, я всегда запускал свой рабочий стол как административный пользователь». Это именно то предположение, которое потерпит неудачу, когда вы меньше всего этого ожидаете.





Да, мы это проверяем.
Вероятно, самое простое, но наиболее часто используемое правило заключается в том, что вы не должны делать ничего, для чего требуется доступ на запись в папку установки вашей программы. Вместо этого для этого есть специальная папка Application Data.
В бизнес-среде большинство пользователей являются стандартными пользователями домена Windows. Игнорировать стандартные пользовательские тесты на соответствие - действительно плохой ход. И вы очень рассердите каждого администратора домена, которому нужно установить ваше приложение, и они пойдут на ваше соревнование.
Да, и я последовал общему совету, что гораздо проще запустить ваше приложение в Vista, если оно нормально работает в XP в качестве ограниченного пользователя. Чтобы добиться этого и узнать, есть ли какие-либо проблемы с запуском от имени ограниченного пользователя, я использовал LUABuglight.
Обычно я не разрабатываю как ограниченный пользователь, а только вхожу в систему как ограниченный пользователь для тестирования.
Количество программ, которым требуются права администратора и которые записывают в свою папку Program Files, просто поразительно. Честно говоря, я нашел очень мало программ, которые правильно работают как ограниченный пользователь, от любой софтверной компании, большой или маленькой.
Слишком верно. Программное обеспечение, которое мои дети хотят установить, почти всегда требует, чтобы я установил его как администратор и попытался установить защиту, чтобы они могли запускать его, не будучи администратором. ВОТ ЭТО БОЛЬ!
Если вы хотите продавать свое приложение предприятиям, тогда да, вы должен тестируете свое приложение, работающее от имени стандартного пользователя. Если ваше приложение не может работать без административных привилегий, это обрекает бизнес на любые продажи.
Даже на внутреннем рынке многие люди могут использовать и используют ограниченных пользователей для выполнения своих повседневных дел; Я знаю, что.
Даже административные приложения, которые по закону нуждаются в административных привилегиях, должны вести себя разумно при работе от имени ограниченного пользователя. Они должны открыть диалоговое окно, информирующее пользователя о том, что для выполнения любой задачи требуются права администратора.
Наилучший способ создания программного обеспечения, учитывающего эти ограничения, - это разработка вашего программного обеспечения под пользователем с ограниченными правами. Таким образом, каждый раз, когда вы разрабатываете функцию, вы неявно тестируете, будет ли она работать в ограниченной среде.
Все это не сложно, просто требуется определенная степень дисциплины - как и во всех процедурах обеспечения качества. Люди разрабатывали * nix как пользователи без полномочий root на протяжении десятилетий. В этом отношении разработка под Windows отстает.
Я использую XP как ограниченный пользователь почти все время и по умолчанию. (В Vista я использую административную учетную запись и полагаюсь на UAC.)
Я развиваюсь как ограниченный пользователь. В разработке на Java и Visual Studio очень мало что требует каких-либо дополнительных привилегий.
Если мне нужно запустить что-то под ограниченной учетной записью, но с правами администратора, я использую сценарий MakeMeAdmin (переименованный и настроенный как ConsoleMeAdmin) .bat, который создает сеанс административной консоли.
Если мне действительно нужно быть администратором для установки и выполнения первого запуска, чтобы мое программное обеспечение безопасности могло разрешить сетевой доступ к новому коду (или нет) и т. д., Я повышу уровень своей учетной записи с ограниченным доступом. Администратору достаточно долго, чтобы все это было сделано, затем снова перезапустите учетную запись как ограниченный пользователь. За исключением обновлений Windows, я выполняю все загрузки как ограниченный пользователь, а затем устанавливаю их в автономном режиме после повышения до администратора.
Поскольку у меня только небольшая локальная сеть рабочей группы без Active Directory, единственными полезными типами учетных записей являются администратор и пользователь с ограниченными правами в XP. (Я попробовал опытный пользователь, когда впервые начал использовать XP, но обнаружил, что могу обойтись без него, и я предпочитаю то, чему меня это учит, независимо от особых привилегий в коде, который я создаю.)
[PS: у меня также есть защита выполнения данных (поддерживаемая аппаратно), активная по умолчанию в моей системе XP, и вы будете удивлены, что это произойдет.]
Это все хорошие ответы, но мне больше всего нравится этот.
Я собираюсь указать вам на выступление Криспина Коуэна "Рекомендации по разработке для стандартного пользователя Windows". Это стоит посмотреть.
Криспин в его разговор PDC высказал хорошее мнение о очень, о котором я никогда раньше не думал.
Google Chrome устанавливается как стандартный пользователь: он устанавливается в папку для каждого пользователя, без запроса UAC или OTS, и все удобно для пользователя, потому что установка так проста. К сожалению, он установлен в папке на пользователя, где пользователь может его изменить.
Другими словами: вредоносное ПО может изменять исполняемый файл Chrome.
Теперь Chrome станет самой большой мишенью для любого вредоносного ПО. И если какое-то вредоносное ПО делает изменит его, Chrome теперь отправляет ваши имена пользователей, пароли и информацию о кредитной карте обратно на домашнюю базу, потому что это то, что делает новый Chrome exe.
Вот почему вы иногда устанавливаете приложения хочу в защищенные места.
Обновлено: вся инициатива развертывания Microsoft «Нажмите один раз» подвергается опасности.
То же самое я думал о системе установщика OSX, которая позволяет устанавливать большинство приложений в учетной записи пользователя. В корпоративной среде это всегда плохо, потому что вы не можете правильно отслеживать, что установлено (а что устарело!).
Я использую модель «установить от имени администратора, запустить от имени пользователя».
Кому-нибудь еще кажется забавным, что разработчики Windows считают нормальным работать от имени администратора (по-видимому), но разработчики Linux почти никогда не работают от имени root?
Большинство из тех, что я знаю, используют учетную запись с правами администратора, а не с правами администратора / root. К сожалению, это стало практикой после многих лет потребности в более высоком доступе, чем было предоставлено пользователю по умолчанию, и теперь это просто привычка. Надеюсь, это не деградирует до религиозной войны ОС.
я тоже не согласен. После многократного запуска sudo люди просто сдаются. Было бы неплохо, если бы это позволяло мне работать как ограниченная учетная запись, но автоматически всплывать что-нибудь, когда ему (на короткое время) нужен root-доступ.
ИМХО разрабатывать под админ-аккаунтом не только ненужно, но и очень опасно! Предположим, вы что-то проверяете в Интернете во время разработки (на ум приходит stackoverflow) и ловите какое-то вредоносное ПО - история показывает, что это намного проще, чем вы могли подумать, например через баннеры. Как администратор, эта вредоносная программа заразит ваш компьютер, и вы, возможно, никогда от нее не избавитесь. Это может быть даже опасно для всех ваших разработок (подумайте о промышленном шпионаже)!
Если вам нужно запускать / тестировать что-либо от имени администратора, используйте либо беги как, либо даже лучше виртуальные машины - таким образом вы можете использовать отдельные системы с определенным поведением (множество проблем с программным обеспечением Windows возникает из библиотек, которые конечно доступны на ПК разработчика, но почти нигде!). Во времена Microsoft Virtual PC и VMWare Server (оба бесплатны) нет даже оправдания из-за высоких цен на программное обеспечение для виртуализации.
Несколько лет назад я разработал несколько приложений для Windows, и, помимо их установщиков, НИЧЕГО ТАКОГО когда-либо требовал прав администратора. Параметры времени выполнения всегда принадлежат пользователю, а не машине.
И да, я запускаю Windows XP как обычный пользователь дома, как и члены моей семьи (родители и т. д.). Иногда дрянному программному обеспечению требуется доступ для записи в папку установки, но к сегодняшнему дню 95% всех установленных приложений работают нормально.
Не все инструменты разработчика всегда работали без прав администратора.
Как старый BOFH я буду обрушивать огонь и гадости на всех, кто просит повышенных прав для правильной работы своих клиентских приложений. Это просто исключено, всегда было с 2001-2002 годов, когда мы перешли с Win9x на XP (sic).
Как только что родившийся разработчик в месте, где каждый на XP является локальным администратором с помощью принудительной групповой политики, и изменение ее, кажется, требует времени, и никто особенно не склонен начинать, я установил прокладку RunAsAdmin, которая опускает меня до обычный пользователь для большинства задач, включая разработку - как в Vista. Рекомендуется, если вы застряли в роли локального администратора на XP ^^
Я разработчик и не «как все», я не работаю с правами администратора, если они мне не нужны (обычно для установки чего-либо, но редко).