Как я могу сделать настройку, при которой мое программное обеспечение потребует прав администратора во время установки?

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

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

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

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

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


person Cyril Gupta    schedule 08.12.2008    source источник
comment
Думаю, мне нужно было прояснить свой вопрос. Я имел в виду, как сделать установку, которая помечает программу для запуска с правами администратора.   -  person Cyril Gupta    schedule 08.12.2008


Ответы (3)


Похоже, в заголовке вашего вопроса спрашивается, как запустить установщик с правами администратора, но в вашем объяснении спрашивается, как запустить программу с правами администратора, чтобы она могла писать в Program Files во время выполнения. Который из них?

Если вы действительно хотите, чтобы установщик запускался с правами администратора, ответ сообщества вики будет довольно точным. Убедитесь, что у вашего установщика есть очевидное имя, например «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>
person flipdoubt    schedule 08.12.2008

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

: РЕДАКТИРОВАТЬ: Из справки inno по разделу требуемых прав администратора / [Настройка]:

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

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

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

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

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

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

В Windows NT / 2000 / XP / 2003:

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

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

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

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

В Windows 95/98 / Me:

Эта директива не действует на эти версии Windows.

person Community    schedule 08.12.2008

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

person JoelFan    schedule 08.12.2008
comment
Если вы не знаете, что это за файл, как узнать, что он находится в реестре? Что, если это файл конфигурации (предпочтительнее реестра)? - person GalacticCowboy; 08.12.2008