tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von pschilling
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
284
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    Hi!

    Ich habe zwei Anwendungen. Das Hauptprogramm und den Updater.

    Wenn ich den Updater über das Hauptprogramm per ShellExecuteEx aufrufe, dann kann der Updater keine Verzeichnisse erstellen. Starte ich den Updater seperat vom Hauptprogramm, erstellt er die Verzeichnisse.

    Hat vllt jmd solch ein Sympton gehabt? Oder fällt jmd dazu etwas ein? Ich arbeite im Program Files Verzeichnis von Windows Vista und denke auch, dass der Fehler nur auf Windows Vista vorkommt.

    Ich rufe im Hauptprogramm den Updater so auf:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    SHELLEXECUTEINFO shExecInfo;
      
          shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
          shExecInfo.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS;
          shExecInfo.hwnd = NULL;
          shExecInfo.lpVerb = _T("runas");
          shExecInfo.lpFile = CPfad::GetAppPfad() + "Updater.exe";
          shExecInfo.lpParameters = NULL;
          shExecInfo.lpDirectory = NULL;
          shExecInfo.nShow = SW_SHOW;
          shExecInfo.hInstApp = NULL;
      
          ShellExecuteEx(&shExecInfo);
    Gruß
    Thorsten
     

  2. #2
    Avatar von pschilling
    pschilling pschilling ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Duisburg (NRW)
    Beiträge
    192
    Hi Thopeto,

    versuchs mal mit

    sei.lpParameters = "runasadmin";

    Unter Vista kann man in bestimmten Verzeichnissen nur im Administratorenmodus Verzeichnisse erstellen..

    Schöne Grüße,

    Pit
     
    Der Computer wird das tun, was du programmierst - nicht das, was du willst ;-)

  3. #3
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    danke für deine hilfe, aber leider hilft das auch nicht. Ich finde es einfach komisch, dass wenn ich das programm aus meinem hauptprogramm heraus aufrufe, er keine verzeichnisse erstellt, aber wenn ich den updater extra aufrufe, also nicht über das hauptprogramm, klappt das wunderbar. Hast du vllt noch mehr tipps? irgendwas? egal was...

    ich verstehs einfach net...

    gruß
    Thorsten
     

  4. #4
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Wo liegt denn der Updater, im selben Verzeichnis wie das Hauptprogramm? Vielleicht ist es ein Problem mit unterschiedlichen Arbeitsverzeichnissen.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  5. #5
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    hi

    liegen beide im selben verzeichnis.

    gruß
    Thorsten
     

  6. #6
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo,

    versuche doch doch mal den Fehler genauer einzugrenzen. Der Updater wird ja eine entsprechende Funktion zum Verzeichnisanlegen haben. Vielleicht kannst du herausbekommen, was genau da schiefgeht.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  7. #7
    Avatar von pschilling
    pschilling pschilling ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Duisburg (NRW)
    Beiträge
    192
    Hi nochmal,

    Um welchen Pfad handelt es sich, den du erzeugen möchtest?

    Du versuchst wahrscheinlich mit CreateDirectory, den Pfad zu erzeugen.

    Gebe dir doch in beiden Fällen (positiv wie negativ) den zu erstellenden Pfad sowie den Rückgabewert von GetlastError() in einer Messagebox aus und poste diese Infos hier noch mal rein.

    Ein häufiger Fehler beim Verwenden von Pfaden ist auch der, dass Pfade mit Leerzeichen nicht in Anführungszeichen gesetzt werden.

    Also folgender Aufruf wird in deinem Fall z.B. nicht funktionieren :

    Updater.exe c:\Program Files\MyDir

    Des muss man so schreiben :

    Updater.exe "c:\Program Files\MyDir"


    Bis dahin,

    Pit
    Thopeto bedankt sich. 
    Der Computer wird das tun, was du programmierst - nicht das, was du willst ;-)

  8. #8
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    mmmhh

    du hast mich da auf eine idee gebracht. Ich benute für meine Plugins SetCurrentDirectory(). Kann es sein, dass wenn ich den Updater aus dem Hauptprogramm starte, ich ihm vllt einen falschen Pfad mitgebe? Das der Updater eventuel im falschen Verzeichnis arbeitet?
    nur so eine idee...

    gruß
    Thorsten
     

  9. #9
    Avatar von pschilling
    pschilling pschilling ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Duisburg (NRW)
    Beiträge
    192
    Hi,

    also ohne die entsprechenden Codezeilen zu lesen kann man da nur raten.

    Poste doch einfach mehr Code und Infos, dann können wir das sicherlich schnell abschließen

    Pit
     
    Der Computer wird das tun, was du programmierst - nicht das, was du willst ;-)

  10. #10
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    hi

    pschilling, dein tipp war guuuuuttt. Es war der Fehler mit SetCurrentDirectory(). Der Updater bekam anscheinend vom Hauptprogramm den falschen Pfad mit. Jetzt klappt es. danke!

    gruß
    Thorsten
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 07.01.08, 07:44
  2. Antworten: 6
    Letzter Beitrag: 03.05.07, 08:46
  3. Aufruf von externen Programmen
    Von TheWasle im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 15.11.06, 09:58
  4. SVG Aufruf von externen Funktionen
    Von kennenburg im Forum XML Technologien
    Antworten: 1
    Letzter Beitrag: 19.04.05, 12:02
  5. Aufruf einer "externen" Klasse
    Von OliWan im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 24.08.04, 09:36