C# Lancio Applicazione da operazioni pianificate

sabato 19 ottobre 2013 - 09.27
Tag Elenco Tags  C#  |  .NET 2.0  |  Windows 7  |  Visual Studio 2010  |  MySQL 5.1

enio58 Profilo | Newbie

Cari amici
Ho creato una applicazione in C# che deve essere mandata in esecuzione ad una certa ora del giorno. Se la lancio normalmente funziona, ma se la faccio lanciare in automatico tramite le operazioni pianificate mi appare una finestra che dice "l'applicazione ha smesso di funzionare..." e si chiude senza neanche avviare il programma. Ho fatto le seguenti prove.
Il mio PC ha Windows 7
Ho provato ad avviarlo direttamente FUNZIONA
Ho provato ad avviare un'altra applicazione (Excel) con la stessa operazione pianificata FUNZIONA
Ho provato a cambiare utente nella pianifica NON FUNZIONA
Ho provato a fare la stessa operazione pianificata su PC con Windows XP FUNZIONA

Qualcuno può darmi una mano
Grazie di cuore

0v3rCl0ck Profilo | Guru

che tipo di applicazione è: windows form/wpf o console application?

hai provato a mettere un utente amministratore della macchina?

hai provato a controllare l'event viewer di sistema per vedere che errore in particolare sta restituendo e in che punto?

ciao
-------------------------------------------------------
Michael Denny
Lead Software Developer & Solutions Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com

enio58 Profilo | Newbie

Si, l'utente che avvia l'operazione pianificata è amministratore della macchina.
Quando si avvia l'operazione pianificata, sono andato a vedere nel registro degli eventi e mi appare il seguente messaggio:

Nome dell'applicazione che ha generato l'errore: AutoBackup.exe, versione: 1.0.0.0, timestamp: 0x525e5669
Nome del modulo che ha generato l'errore: KERNELBASE.dll, versione: 6.1.7601.18015, timestamp: 0x50b83b16
Codice eccezione: 0xe0434f4d
Offset errore 0x0000812f
ID processo che ha generato l'errore: 0x%9
Ora di avvio dell'applicazione che ha generato l'errore: 0x%10
Percorso dell'applicazione che ha generato l'errore: %11
Percorso del modulo che ha generato l'errore: %12
ID segnalazione: %13

Io non so interpretarlo purtroppo.... se mi puoi aiutare ti ringrazio di cuore


0v3rCl0ck Profilo | Guru


scusa il ritardo nel risponderti....

per caso l'eseguibile .net è lanciato da una folder di rete (cartella condivisa)?


-------------------------------------------------------
Michael Denny
Lead Software Developer & Solutions Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com

0v3rCl0ck Profilo | Guru

oppure utilizzi del codice unmanaged? codice che non è del framework .net, come chiamate ad oggetti COM, oppure a windows API.


-------------------------------------------------------
Michael Denny
Lead Software Developer & Solutions Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com

enio58 Profilo | Newbie

la cartella è sul mio PC sulla quale ovviamente ho tutti i diritti.
L'applicazione (C#) crea un file batch che viene eseguito dallo stesso programma.... ecco qui il codice nel metodo Load:

private void Form1_Load(object sender, EventArgs e)
{
string cTesto;
string cDataOdierna;
FileStream cFile;
Process App;

cDataOdierna = utils.DtoC(DateTime.Today).Substring(0,2)+"-"+utils.DtoC(DateTime.Today).Substring(3,2)+"-"+utils.DtoC(DateTime.Today).Substring(6,4); //SubStr(DToC(Today()),1,2)+"-"+SubStr(DToC(Today()),4,2)+"-"+SubStr(DToC(Today()),7,4)
cTesto = "Echo off\r\n";
cTesto += "mysqldump --host=" + Program.cIPAddress + " --user=utente --password=ed230558 --port=3306";
cTesto += " --quick --add-drop-table -v \"" + utils.oSqlConn.Database + "\"" + " > \"" + Program._CARTELLABACKUP + ("\\") + utils.oSqlConn.Database + " " + cDataOdierna + ".sql\"\r\n";

System.IO.File.Delete("auto_backup.bat");
cFile = File.Create("auto_backup.bat");
cFile.Close();
System.IO.File.WriteAllText("auto_backup.bat", cTesto);
App = new Process();

App.StartInfo.FileName = "auto_backup.bat";
// App.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
App.Start();
App.Close();
this.Close();

}
}

Nota : Program._CARTELLABACKUP è una variabile Globale contenente la path di dove voglio memorizzare il file del
backup, che viene letta da un file XML esterno.

<?xml version="1.0" encoding="utf-8"?>
<SET>
<cartellabackup>D:\DiniMySQL\allegati</cartellabackup>
</SET>

Il bello è che se lancio l'applicazione senza farla avviare dalle operazioni pianificate, mi funziona benissimo.


Grazie per la disponibilità
Enio

0v3rCl0ck Profilo | Guru


Hai la necessità per forza di creare un batch file, non potresti semplicemente completare il comando sfruttando la classe managed Process? Compilando correttamente la proprietà Arguments che trovi dentro a StartInfo.

Nello scheduler hai provato ad utilizzare il tuo stesso utente che utilizzi quando sviluppi? o hai messo un utente di sistema?


-------------------------------------------------------
Michael Denny
Lead Software Developer & Solutions Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5