Mam aplikację Windows Forms (C#, NET 3.5) zainstalowaną przy użyciu instalatora MSI. W tej aplikacji mam przycisk, który po naciśnięciu otwiera przeglądarkę z określonym adresem URL. UżywamC# Windows Forms nie otwiera domyślnej przeglądarki po instalacji
Process.Start(url);
, aby otworzyć przeglądarkę. To działa dobrze podczas debugowania, ale po instalacji ma mniej niż optymalne wyniki. Na przykład.
- Gdybym go zainstalować z opcji Tylko ja wybranych i otwiera domyślną przeglądarkę (FF) z aktualnymi ustawieniami.
- Jeśli mogę zainstalować go z opcją Wszyscy, po naciśnięciu przycisku otwiera wersję IE z żadnej z moich ostatnich ustawień (proxy, paski narzędzi wyświetlane etc)
O ile mogę powiedz, że ten problem jest spowodowany przez użytkownika skojarzonego z aplikacją podczas instalacji.
Biorąc pod uwagę to, że użytkownicy mogą wymagać serwerów proxy i ustawień osobistych przeglądarki, a wybór "Tylko dla mnie" powinien pozostać dla użytkownika. Jaki jest najlepszy kurs akcji?
Próbowałem nazywając Process.Start (URL) z obecnym zalogowanego użytkownika za pomocą
ProcessStartInfo.UserName = Environment.UserName
Ale to także wymaga podania hasła i prosząc o poświadczenia nie jest rozwiązaniem.
Czy masz inne sugestie, czy używam Process.Start() niepoprawnie, czy są jakieś ustawienia, które muszę wprowadzić podczas instalacji, czy jest coś, co przegapiłem?
UPDATE: Korzystanie Process Explorer jako data_smith zasugerował zauważyłem następujące:
- Gdybym zainstalować aplikację dla każdego rozpocznie pod NT AUTHORITY \ użytkownik SYSTEM stąd nieskonfigurowanym przeglądarce.
- Jeśli mogę zainstalować aplikacji z Just Me wybrany zaczyna pod bieżącego użytkownika
Czy istnieje sposób, nie pytając o poświadczenia, aby uruchomić aplikacji (przy rozruchu systemu Windows) w ramach bieżącego użytkownika nawet choć jest on zainstalowany dla wszystkich?
UPDATE: Po sugestii data_smith korzystania ShellExecute i sugestie here i here udało mi się rozwiązać ten problem i uzyskać pożądane zachowanie.
Głównym problemem było to, że po zakończeniu instalacji aplikacja została uruchomiona za pomocą metody Process.Start(); Ta aplikacja została uruchomiona jako użytkownik NT AUTHORITY \ SYSTEM (instalatorzy użytkowników działają pod kontrolą), dlatego wszystkie przeglądarki otwarte przez tę aplikację będą również pod użytkownikiem SYSTEM. Korzystając z sugestii od data_smith i sugestii związanych powyżej, byłem w stanie uruchomić proces pod bieżącym użytkownikiem.
Po ponownym uruchomieniu komputera aplikacja uruchamia się pod prawidłowym użytkownikiem, ponieważ jest ona konfigurowana poprzez wpisy rejestru.
Czy uruchamiasz aplikację z poziomu instalatora? – ogggre
Po zainstalowaniu aplikacji rozpoczyna się natychmiast i zawsze rozpoczyna się przy starcie maszyny. Znajduje się w zasobniku systemowym. – Constantin
Myślę, że to, co @ogggre zapytał, czy Twoja aplikacja została uruchomiona przez instalatora? Może to być problem związany z poświadczeniami. Użyj ProcExp (by SysInternals), aby zobaczyć program macierzysty. – data