У меня есть приложение Windows Forms (C#, NET 3.5), установленное с помощью установщика MSI. В этом приложении у меня есть кнопка, при нажатии которой открывается браузер с определенным URL-адресом. Я использую
Process.Start(url);
, чтобы открыть браузер. Это отлично работает при отладке, но после установки дает далеко не оптимальные результаты. Например.
Насколько я могу судить, эта проблема вызвана пользователем, связанным с приложением при установке.
Принимая во внимание, что пользователям могут потребоваться прокси-серверы и личные настройки браузера, а также то, что выбор «Только я, каждый» должен оставаться за пользователем. Каков наилучший курс действий?
Я попытался вызвать Process.Start(url)с текущим зарегистрированным пользователем, используя
ProcessStartInfo.UserName = Environment.UserName
Но для этого также требуется пароль, и запрос учетных данных не вариант.
Есть ли у вас какие-либо другие предложения, я неправильно использую Process.Start(), есть ли какие-то настройки, которые мне нужно сделать во время установки, есть ли что-то, что я пропустил?
ОБНОВЛЕНИЕ: Используя Process Explorer в качестве данных_смит предложил, я заметил следующее:
Есть ли способ, не запрашивая учетные данные,заставить приложение запускаться (при загрузке Windows)под текущим пользователем, даже если оно установлено у всех?
ОБНОВЛЕНИЕ:После предложения data_smith использовать ShellExecute и предложений здесь и здесь я смог решить проблему и получить желаемое поведение.
Основная проблема заключалась в том, что после завершения установки приложение запускалось с помощью Process.Start(); Это запустило приложение как пользователь NT AUTHORITY\SYSTEM (, установщики пользователей работают под ), поэтому все браузеры, открытые этим приложением, также будут под пользователем SYSTEM. Используя предложение data_smith и предложения, указанные выше, я смог запустить процесс под текущим пользователем.
После перезагрузки компьютера приложение запускается под правильным пользователем, поскольку это настраивается с помощью записей реестра.