C#Windows Forms не открывает браузер по умолчанию после установки

У меня есть приложение Windows Forms (C#, NET 3.5), установленное с помощью установщика MSI. В этом приложении у меня есть кнопка, при нажатии которой открывается браузер с определенным URL-адресом. Я использую

Process.Start(url);

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

  • Если я устанавливаю его с выбранными параметрами Just Me, я открываю свои настройки по умолчанию. браузер (FF)с текущими настройками.
  • Если я устанавливаю его с опцией «Все», при нажатии кнопки он открывает версию IE без каких-либо моих последних настроек (прокси, панели инструментов и т.д.)

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

Принимая во внимание, что пользователям могут потребоваться прокси-серверы и личные настройки браузера, а также то, что выбор «Только я, каждый» должен оставаться за пользователем. Каков наилучший курс действий?

Я попытался вызвать Process.Start(url)с текущим зарегистрированным пользователем, используя

ProcessStartInfo.UserName = Environment.UserName

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

Есть ли у вас какие-либо другие предложения, я неправильно использую Process.Start(), есть ли какие-то настройки, которые мне нужно сделать во время установки, есть ли что-то, что я пропустил?

ОБНОВЛЕНИЕ: Используя Process Explorer в качестве данных_смит предложил, я заметил следующее:

  • Если я установлю приложение для всех, оно запустится под NT Пользователь AUTHORITY\SYSTEM, следовательно, ненастроенный браузер.
  • Если я устанавливаю приложение с выбранным параметром «Только я», оно запускается под текущий пользователь

Есть ли способ, не запрашивая учетные данные,заставить приложение запускаться (при загрузке Windows)под текущим пользователем, даже если оно установлено у всех?

ОБНОВЛЕНИЕ:После предложения data_smith использовать ShellExecute и предложений здесь и здесь я смог решить проблему и получить желаемое поведение.

Основная проблема заключалась в том, что после завершения установки приложение запускалось с помощью Process.Start(); Это запустило приложение как пользователь NT AUTHORITY\SYSTEM (, установщики пользователей работают под ), поэтому все браузеры, открытые этим приложением, также будут под пользователем SYSTEM. Используя предложение data_smith и предложения, указанные выше, я смог запустить процесс под текущим пользователем.

После перезагрузки компьютера приложение запускается под правильным пользователем, поскольку это настраивается с помощью записей реестра.

6
задан Community 23 May 2017 в 12:21
поделиться