Я хочу установить собственный клиент Microsoft SQL Server в самозаверяющий установщик. Драйвер базы данных должен быть установлен один раз при первом запуске.Запросы на права администратора для установки драйвера в Delphi
Моя проблема в том, что на некоторых компьютерах установка драйвера не выполняется, если моя программа не работает как администратор.
Если моя программа не работает как администратор, я получаю «runas» в правах администратора ShellExecute. Появится запрос на права администратора, но затем на некоторых компьютерах установка драйвера не выполняется.
function shellExec (APath, AParameter: String) : Boolean;
rslt := ShellExecute (0, pChar('runas'), pChar(APath), pChar(AParameter), pChar(''), SW_SHOWNORMAL);
result := (rslt > 32);
end;
shellExec('msiexec.exe', '-i' + MsiInstaller + ' /qn IACCEPTSQLNCLILICENSETERMS=YES');
// MsiInstaller = Path to NativeClient-Installer
Затем я даю программе спящий режим (20000) 20 секунд, так что установка может быть выполнена. В обычных быстрых компьютерах установка занимает 2-4 секунды, поэтому щедро рассчитанные 20 секунд не должны быть проблемой.
Для наглядности, оценка ошибки с "rslt" отсутствует здесь, в сообщении. Конечно, он добавлен в мой код. Но я не получаю никаких кодов ошибок.
Кто-нибудь знает, почему установка работает, когда программа запускается с правами администратора, но не когда она запрашивает сами права администратора?
Если программа запускается с правами администратора, для прав администратора для установки драйвера не отображается второе сообщение.
Вопрос: Как обеспечить, чтобы программа установки всегда выполнялась, и моя программа не должна запускаться с правами администратора?
Дублированной темы. Вы можете проверить, нужны ли вам права администратора, выполнять как администратор, если необходимо, и ждать завершения установки ... http://stackoverflow.com/questions/923350/delphi-prompt-for-uac-elevation-when-needed/28572886# 28572886 – smooty86
Плохая идея, установки должны происходить во время установки не во время запуска. Напишите отдельный установщик (который требует прав администратора), но убедитесь, что фактическое приложение может работать с правами пользователя. – Remko