PDA

View Full Version : C# Autostart application


rizzotti91
09-07-2014, 03:05
Ciao a tutti, ho la necessità di avviare un'applicazione, da me realizzata, all'avvio del computer.

Sto utilizzando il seguente codice:


RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rkApp.SetValue("MyApp", "\"" + Application.ExecutablePath.ToString().Replace("/", @"\") + "\" StartMinimized");


L'esecuzione automatica dell'applicazione avviene ma ci sono diversi problemi:

- All'avvio dell'applicazione, viene letto un file XML che serve a popolare un combobox, ma questo file non viene trovato (solo se viene avviata automaticamente l'applicazione);
- Altra cosa prevista nell'applicazione è quella di dialogare con un server web. Anche in questo caso non è possibile eseguire l'azione se l'applicazione è stata avviata automaticamente da Windows;

Sinceramente non riesco a capire perché non riesca a leggere il file ed a dialogare con il server web SOLO SE l'applicazione viene avviata automaticamente.

Ho provato a cambiare la directory in cui risiedono l'eseguibile ed il file .XML, ma il risultato non è cambiato.
Consigli?

Q_Q
09-07-2014, 15:49
Invece che usare il registro prova a mettere un collegamento in:
%AppData% Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Guarda se va così

rizzotti91
09-07-2014, 18:36
Invece che usare il registro prova a mettere un collegamento in:
%AppData% Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Guarda se va così

Ho risolto creando una shortcut come da te consigliato.
Anche facendo così, non funzionava poiché non veniva specificata la "WorkingDir", dopo averla specificata, tutto ha cominciato a funzionare.
Credo che è per questo che non funzionava con la chiave nel registro... si dovrà aggiungere un'ulteriore chiave nel registro?

Q_Q
09-07-2014, 20:39
Per caso nel programma usi GetCurrentDirectory ?

rizzotti91
09-07-2014, 21:43
Per caso nel programma usi GetCurrentDirectory ?

No, specifico il nome del file .xml da aprire senza indicare un path quindi, implicitamente, si intende che è nella stessa directory dell'eseguibile..

Q_Q
09-07-2014, 23:42
Devi mettere il path sennò fa così:

http://www.japantrip.tk/imgboard/thumb/1404942057726s.jpg (http://www.japantrip.tk/imgboard/src/1404942057726.png)

rizzotti91
10-07-2014, 00:03
Devi mettere il path sennò fa così:

http://www.japantrip.tk/imgboard/thumb/1404942057726s.jpg (http://www.japantrip.tk/imgboard/src/1404942057726.png)

Quella parte l'avevo già fatta correttamente :)
Ovviamente il path nella chiave di registro c'era, se no non mi avrebbe avviato l'applicazione :)

Q_Q
10-07-2014, 10:09
Intendevo qui devi mettere il path:
No, specifico il nome del file .xml da aprire senza indicare un path quindi, implicitamente, si intende che è nella stessa directory dell'eseguibile..

Se guardi l'immagine che ho postato vedi che nel registro c'è l'eseguibile con il path giusto e nel codice del filestream c'è solo il nome del file, come hai fatto te.
Se apro l'exe cliccandoci si crea il file nella stessa cartella dell'exe, ma se lo faccio partire dal registro il file si crea in windows\syswow64 (su win7 x64)

rizzotti91
11-07-2014, 02:44
Ok, capito, appena posso provo :)

Per caso sai come posso fare a "capire" se il programma è stato eseguito automaticamente all'avvio del pc o se è stato l'utente ad aprirlo manualmente?