У меня есть приложение, которое Windows 2008 всегда будет запускать «от имени администратора» (т.е. синий / желтый значок наложения щита всегда виден).
Однако флаг «запускать эту программу от имени администратора» установлен. не установить в свойствах файла.
Откуда появился этот неявный флаг и как от него избавиться?
Предыстория: я не хочу запускать эту программу от имени администратора, она должна запускаться в запланированной задаче с непривилегированной учетной записью. Однако в настоящее время UAC не позволяет запускать эту программу.
Вы можете использовать одну из нескольких эвристик Windows, чтобы определить, нужны ли приложению права администратора. Если он определяет, что приложению требуются административные привилегии, он запускает запрос UAC. Это не идеально и не всегда правильно, но все это делается для обеспечения обратной совместимости.
Один из наиболее распространенных - просто по имени файла. Если файл содержит установить или настроить (и, возможно, Обновить), то он предложит, если явно не указано не делать этого с помощью встроенного файла манифеста. Вы ничего не сможете изменить, разработчик должен будет внести это изменение.
Это может быть запись в привилегированное место, например, куда-нибудь C:/Windows
или C:/Program Files
или даже привилегированное место в реестре (в частности, где-нибудь HKEY_LOCAL_MACHINE
). Стандартный пользователь не может записать (или даже получить доступ в некоторых случаях) в эти места, и поэтому Windows должна запускать запрос UAC для правильной работы приложения.
Вы можете проверить, доступны ли какие-либо обновления от издателя этого приложения. Они могут предоставить вам обновление, обеспечивающее совместимость с Windows Server 2008. Если нет, возможно, попробуйте связаться с ними и спросить, знают ли они о каких-либо проблемах, и посмотреть, есть ли у них решение.
Эта программа также может быть указана во встроенной базе данных совместимости как требующая повышения прав для правильной работы. Я не уверен, можете ли вы повлиять на этот список или нет, но вам, вероятно, лучше всего будет получить более свежую версию от издателя программного обеспечения, которая подтвердила совместимость с Windows Server 2008.
Возможно, приложение старое и что-то странное это вызывает одну из эвристик. У меня было написанное мной приложение, которое отлично работало в Windows XP, но в Vista и более поздних версиях оно запускало приглашение UAC. Это не читать или писать любой из привилегированных мест, о которых я упоминал ранее. Не меняя никакого кода и просто перекомпилируя его в Visual Studio 2010 (в отличие от Visual Studio 2005, в котором он был изначально скомпилирован), эта проблема решена.