После того, как моя программа установлена на клиентском компьютере, как заставить программу работать в Windows 7 в качестве администратора ?
876
После того, как моя программа установлена на клиентском компьютере, как заставить программу работать в Windows 7 в качестве администратора ?
Ответы:
Вы захотите изменить манифест, встроенный в программу. Это работает в Visual Studio 2008 и более поздних версиях: Project + Add New Item, выберите «Файл манифеста приложения». Измените
<requestedExecutionLevel>
элемент на:Пользователь получает приглашение UAC при запуске программы. Используйте с умом; их терпение может быстро изнашиваться.
источник
Добавление
requestedExecutionLevel
элемента в ваш манифест - это только полдела; Вы должны помнить, что UAC можно отключить. Если это так, вы должны выполнить проверку по-старому и вывести диалоговое окно с сообщением об ошибке, если пользователь не является администратором(вызовите
IsInRole(WindowsBuiltInRole.Administrator)
вашу веткуCurrentPrincipal
).источник
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
так жеIsInRole
, о котором говорит Андерс.Подробные шаги заключаются в следующем.
Обратите внимание, что с помощью этого кода вам необходимо отключить настройки безопасности ClickOnce, для этого перейдите в Свойства -> Безопасность -> Безопасность ClickOnce.
источник
New Item...
не вариант в моем проекте службы установки. Как я могу добавить манифест приложения? Я могу добавить его в свой основной проект, но не его установщик.Я реализовал некоторый код, чтобы сделать это вручную:
источник
Вы можете встроить файл манифеста в EXE-файл, что приведет к тому, что Windows (7 или выше) всегда будет запускать программу от имени администратора.
Вы можете найти более подробную информацию в Шаге 6: Создание и встраивание манифеста приложения (UAC) (MSDN).
источник
Работая над Visual Studio 2008, щелкните правой кнопкой мыши
Project -> Add New Item
и выберитеApplication Manifest File
.В файле манифеста вы найдете тег
requestedExecutionLevel
и можете установить уровень на три значения:<requestedExecutionLevel level="asInvoker" uiAccess="false" />
ИЛИ
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
ИЛИ
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Чтобы приложение работало от имени администратора, вам нужно выбрать среднее.
источник
Согласно
Вы захотите добавить манифест приложения, если у вас его еще нет или вы не знаете, как его добавить. Поскольку некоторые проекты не добавляют автоматически отдельный файл манифеста, сначала перейдите в свойства проекта, перейдите на вкладку « Приложение » и убедитесь, что ваш проект не исключает манифест в нижней части касания.
источник
В Visual Studio 2010 щелкните правой кнопкой мыши имя вашего проекта. Нажмите «View Windows Settings», чтобы создать и открыть файл «app.manifest». В этом файле замените «asInvoker» на «requireAdministrator», как описано в закомментированных разделах файла.
источник
Еще один способ сделать это только в коде - это определить, запущен ли процесс от имени администратора, как в ответе @NG., А затем снова откройте приложение и закройте текущее.
Я использую этот код, когда приложению нужны только права администратора при запуске в определенных условиях, например при установке себя в качестве службы. Так что он не должен запускаться от имени администратора все время, как другие ответы тоже.
Обратите внимание, что в приведенном ниже коде
NeedsToRunAsAdmin
показан метод, который определяет, требуются ли в текущих условиях права администратора. Если это вернетсяfalse
код не будет повышать себя. Это главное преимущество этого подхода перед другими.Хотя этот код имеет преимущества, указанные выше, он должен перезапустить себя как новый процесс, который не всегда соответствует желаемому.
источник
runas
правами администратора от пользователя, не являющегося администратором, в противном случае он будет тихо открываться с текущими разрешениями пользователя (проверено в Windows 7 64-битная версия). Насколько я могу сказать, единственное, что вы можете сделать с отключенным UAC и отсутствием прав администратора, - это остановить выполнение в нужный момент.Вы можете создать манифест с помощью настроек безопасности ClickOnce, а затем отключить его:
После того, как вы щелкнете по нему, файл будет создан в папке свойств проекта с именем app.manifest, как только он будет создан, вы можете снять флажок
Enable ClickOnce Security Settings
флажокОткройте этот файл и измените эту строку:
чтобы:
Это заставит программу требовать прав администратора.
источник
Это упрощенная версия этого ответа , @NG выше
источник
Щелкните правой кнопкой мыши по своему исполняемому файлу, выберите «Свойства»> «Совместимость» и установите флажок «Запускать эту программу от имени администратора».
Если вы хотите запустить его как администратор для всех пользователей, сделайте то же самое в «настройке изменений для всех пользователей».
источник