Ho un'applicazione Windows Form (C#, NET 3.5) installata utilizzando un programma di installazione MSI. In questa applicazione ho un pulsante che quando premuto apre un browser con un URL specifico. Io usoC# Windows Forms non apre il browser predefinito dopo l'installazione
Process.Start(url);
per aprire il browser. Funziona bene durante il debug, ma dopo l'installazione ha risultati non ottimali. Per esempio.
- Se lo installo con le opzioni Just Me selezionate apro il mio browser predefinito (FF) predefinito con le impostazioni correnti.
- Se lo installo con l'opzione Tutti, quando si preme il pulsante di si apre una versione di IE con una qualsiasi delle mie recenti impostazioni (proxy, le barre degli strumenti visualizzata etc)
Per quanto posso questo problema è causato dall'utente associato all'applicazione durante l'installazione.
Considerando che gli utenti possono richiedere i proxy e le impostazioni del browser personale e che la scelta di Just Me, Everyone deve rimanere all'utente. Qual è il miglior corso di azione?
Ho provato a chiamare Process.Start (URL) con l'attuale utente connesso utilizzando
ProcessStartInfo.UserName = Environment.UserName
ma richiede anche una password e chiedere le credenziali non è un'opzione.
Avete altri suggerimenti, sto usando Process.Start() in modo errato, ci sono impostazioni che devo fare durante l'installazione, c'è qualcosa che mi è sfuggito?
UPDATE: Utilizzando Process Explorer come data_smith suggerito ho notato quanto segue:
- Se installo l'applicazione per tutti inizierà sotto l'autorità \ utente SYSTEM NT quindi il browser non configurato.
- Se installo l'applicazione con Just Me selezionato inizia sotto l'utente corrente
C'è un modo, senza chiedere le credenziali, per rendere l'inizio dell'applicazione (in fase di avvio di Windows) con l'utente corrente anche sebbene sia installato per tutti?
UPDATE: A seguito di un suggerimento di data_smith utilizzare ShellExecute ei suggerimenti here e here sono stato in grado di risolvere il problema e ottenere il comportamento desiderato.
Il problema principale era che quando l'installatore terminava l'applicazione veniva avviata con Process.Start(); Ciò ha avviato l'applicazione come utente di NT AUTHORITY \ SYSTEM (gli installatori degli utenti sono in esecuzione), pertanto tutti i browser aperti da questa applicazione si troverebbero anche in SYSTEM user. Utilizzando il suggerimento di data_smith e i suggerimenti collegati sopra, ho potuto avviare il processo con l'utente corrente.
Dopo il riavvio del computer, l'applicazione viene avviata con l'utente corretto poiché viene configurata tramite le voci del Registro di sistema.
Eseguire l'applicazione dall'installatore? – ogggre
Dopo l'installazione dell'applicazione, viene avviato immediatamente e viene sempre avviato all'avvio della macchina. Si trova nella barra delle applicazioni. – Constantin
Penso che sia stato chiesto @ogggre, la tua applicazione è stata lanciata dall'installatore? Questo potrebbe essere un problema legato alle "credenziali". Usa ProcExp (da SysInternals) per vedere il genitore del tuo programma. – data