Как я могу выполнить настройку, которая заставляет мое программное обеспечение требовать права администратора во время установки? - PullRequest
2 голосов
/ 08 декабря 2008

Я создал приложение, которое записывает некоторые данные в корневую папку каталога, в котором они были установлены (в Program Files). Но в Windows Vista программе не удается выполнить запись в каталог, поскольку UAC ограничивает права администратора.

Мне нужно сделать следующее

  1. Запишите файл в папку, где программа была установлена ​​в программных файлах.

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

Есть ли способы или предложения, которые я могу сделать это?

Ответы [ 3 ]

1 голос
/ 08 декабря 2008

Я думал, что Vista справляется с этим для программ, которые "выглядят как программы установки". Вы используете инсталлятор, такой как NSIS или Inno? Я думаю, что у Инно есть способ попросить об этом. Хотя не уверен.

: EDIT: Из справки inno по привилегиям admin / [Setup] требуется раздел:

Допустимые значения: none, poweruser или admin
Значение по умолчанию: admin

Описание: Эффект этой директивы зависит от того, какую версию Windows использует пользователь:

В Windows Vista и более поздних версиях:

Эта директива влияет на то, запрашиваются ли повышенные права (через диалоговое окно контроля учетных записей) при запуске установки.

Если установлено значение admin (по умолчанию) или poweruser, программа установки всегда будет работать с правами администратора. Если программа установки была запущена непривилегированным пользователем, Windows запросит пароль для учетной записи с правами администратора, после чего программа установки запустится под этой учетной записью.

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

В Windows NT / 2000 / XP / 2003:

Эта директива определяет минимальные права пользователя, необходимые для запуска установки.

Если установлено значение admin (по умолчанию), программа установки будет работать только в том случае, если пользователь является членом группы «Администраторы». В противном случае отобразится следующее сообщение и будет завершено: «Вы должны войти в систему как администратор при установке этой программы».

Если установлено значение poweruser, программа установки будет работать только в том случае, если пользователь является членом группы администраторов или опытных пользователей. В противном случае отобразится следующее сообщение и будет завершено: «Вы должны войти в систему как администратор или член группы« Опытные пользователи »при установке этой программы».

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

В Windows 95/98 / Me:

Эта директива не влияет на эти версии Windows.

1 голос
/ 08 декабря 2008

Звучит так, будто заголовок вашего вопроса спрашивает, как заставить программу установки работать с правами администратора, но ваше объяснение спрашивает, как заставить программу работать с правами администратора, чтобы она могла записывать файлы программ во время выполнения. Какой это?

Если вы действительно хотите, чтобы установщик работал с правами администратора, ответ вики-сообщества достаточно точен. Убедитесь, что у вашего установщика есть очевидное имя, например «Setup.exe», и Vista использует «эвристику», чтобы решить, что ваш установщик должен работать от имени администратора.

Если вы действительно хотите писать в Program Files во время выполнения, не делайте этого. Это официальный совет для Vista: вместо этого пишите в каталог AppData пользователя. Если у вас слишком много кода для перезаписи, вы можете включить файл манифеста, который заставляет Vista запрашивать права администратора при запуске приложения. Если ваше приложение называется app.exe, включите файл app.exe.manifest, который содержит следующее:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestversion="1.0">
<assemblyidentity version="1.0.0.0" processorarchitecture="X86" name="app.exe" type="win32">
<description>My Application</description>
<trustinfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedprivileges>
<requestedexecutionlevel level="requireAdministrator">
</requestedexecutionlevel>
</requestedprivileges>
</security>
</trustinfo>
0 голосов
/ 08 декабря 2008

Лучше всего, чтобы вы не писали никаких файлов в разделе «Программные файлы». Все, что вы пытаетесь написать, лучше записать в реестр Windows. Тогда вам, конечно, придется изменить свою программу, чтобы она считывала информацию из реестра, а не из этого файла. Но на самом деле это то, для чего предназначен Реестр.

...