WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 27.11.2003, 13:43   #1
Sonic
Master
 
Registriert seit: 28.03.2000
Alter: 45
Beiträge: 691


Sonic eine Nachricht über ICQ schicken
Unglücklich Problem mit CreateProcess (C/Win32-API)

Hallo!

Ich hab ein Win32 Consolen Programm geschrieben das als Scheduled Task laufen soll und, unter anderem, automatisch Zip files mit hilfe eines externen packprogramms erstellt.

Das ganze funktioniert, wenn ich das Programm auf der Console starte, wunderbar.
Jedoch wenn es als Scheduled Task startet bekomme ich beim CreateProcess eine Windows Fehlermeldung (Messagebox) mit folgender Fehlermeldung:

"The Application failed to initzialize properly.
Click OK to terminate the aplication."

Ich hab im Moment leider keine Ahnung woran es liegen könnte und hoffe das jemand von euch rat weiß!

Wäre für jeden Rat dankbar!

Code zum Zippen:
PHP-Code:

/*** Function CompressFile ***\
exepath        Path of the zip executable
source        source directory where the file to be compressed lies
dest            destination path where compressed file will be put
name            source filename
password    password for encryption
returns 999 if the process could not be created or the returncode of the zip programm
*/

#define ZIP_COMPRESS_FORMAT "%s -add -lev=9 -silent -move -pass=%s \"%s%s.zip\" \"%s%s\""
#define ZIP_COMPRESS_FORMAT_LEN 56

int CompressFile(char *exepath,char sourcechar *destchar *namechar *password)
{
    
STARTUPINFO sti;
    
PROCESS_INFORMATION pri;
    
char *cmdline;
    
DWORD exitcode;

    
//Assemble Commandline
    
cmdline=(char*)malloc(sizeof(char)*(ZIP_COMPRESS_FORMAT_LEN+1+strlen(exepath)+strlen(source)+strlen(dest)+strlen(password)+strlen(name)*2));
    
sprintf(cmdline,ZIP_COMPRESS_FORMAT,exepath,password,dest,name,source,name);

    
memset(&sti,0,sizeof(STARTUPINFO)); 
    
sti.cb=sizeof(STARTUPINFO);
    
sti.lpDesktop="";

    if (
CreateProcess(NULLcmdline,NULLNULL0NORMAL_PRIORITY_CLASSNULLNULL, &sti, &pri))
    {
        
//Wait till process has finished
        
WaitForSingleObjectpri.hProcessINFINITE );
        
//And save the exitcode to be returned
        
GetExitCodeProcess(pri.hProcess, &exitcode);
        
        
//Cleanup
        
CloseHandlepri.hProcess );
        
CloseHandlepri.hThread );
        
free(cmdline);
        return 
exitcode;
    }
    else
    {
        
//The process could not be created
        
free(cmdline);
        return 
999;
    }

LG
____________________________________
__________________
|»»»»»SONIC««««««|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Sonic ist offline   Mit Zitat antworten
Alt 28.11.2003, 00:19   #2
JackLemon
Senior Member
 
Registriert seit: 02.11.2002
Beiträge: 179


Standard

unter welchem benutzer startest du den prozess? hat er das privileg "anmelden als dienst"? kannst du andere programme als scheduled task starten? schreibt srvany was ins ereignis-protokoll?

-JL
____________________________________
It\'s not a bug... It\'s a feature!

You know, the main advantage of encrypted paella over ordinary paella is that nobody but you knows what you are eating... (Alvaro)
JackLemon ist offline   Mit Zitat antworten
Alt 28.11.2003, 10:50   #3
Sonic
Master
 
Registriert seit: 28.03.2000
Alter: 45
Beiträge: 691


Sonic eine Nachricht über ICQ schicken
Standard

Hab das Privileg "anmelden als dienst" vergeben, hat aber leider nichts geholfen. Im Ereigniss-Protokoll steht leider auch nichts drinnen.

Egal wasfürein Programm ich aus dem Task heraus starte es kommt immer diese Fehlermeldung. Es liegt also nicht am ZIP Programm.

lg
____________________________________
__________________
|»»»»»SONIC««««««|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Sonic ist offline   Mit Zitat antworten
Alt 28.11.2003, 13:34   #4
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Gib doch einmal über printf deine Parameter aus!
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 01.12.2003, 11:12   #5
Sonic
Master
 
Registriert seit: 28.03.2000
Alter: 45
Beiträge: 691


Sonic eine Nachricht über ICQ schicken
Standard

Mit den Parametern passt soweit alles.
Es funktioniert ja auch wenn ich es "händisch" also auf der Console starte.
Der Fehler tritt nur auf wenn ichs als Scheduled Task laufen lass.
____________________________________
__________________
|»»»»»SONIC««««««|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Sonic ist offline   Mit Zitat antworten
Alt 01.12.2003, 11:50   #6
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Hast du CreateProcess mit den richtige Parameter-Werten aufgerufen
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:49 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag