working dir für URL Protokoll???

  • Hey all,

    Da es sich bei meiner Frage nur bedingt um AutoIt handelt, bin ich wohl im OffTopic besser aufgehoben.
    Ich versuche ein Programm per URL aufzurufen. Das Protokoll dafür hab ich bereits (eigentlich) erfolgreich
    in die Windows registry reingeschrieben, denn das Programm startet...

    Leider schmeisst mir Windows aber sofort danach ne Fehlermeldung um die Ohren

    Zitat

    Error during initialization:
    blablabla not found in /main

    Aber die Dateien sind definitiv vorhanden. Das aktuelle "working directory" wird also nicht erkannt, obwohl es ja eigentlich klar sein sollte:

    Code
    "X:\Pfad\zur.exe" "%1"

    Sicher bin ich auf dem Holzweg, denn ich glaube, das "%1" steht doch dafür, das eben dieser Pfad zur ExeDatei als "Working Dir" gilt.
    Was muss ich tun, damit

    Code
    X:\Pfad

    als "working dir" funktioniert???

  • Gib mal bitte ein paar mehr Informationen.

    • Was soll am Ende genau herauskommen?
    • "bereits erfolgreich in die Windows registry reingeschrieben" - die Registry ist groß...
      Was hast du wie und wohin geschrieben und was wolltest du damit bezwecken?
    • Was macht das Programm, wie wird es normalerweise verwendet und welche eventuellen Parameter bekommt es wie und warum?
    Zitat

    denn ich glaube, das "%1" steht doch dafür, das eben dieser Pfad zur ExeDatei als "Working Dir" gilt.

    Wie gesagt - in welchem Kontext taucht dieser Befehl auf? In der Registry bei der Verknüpfung von Dateitypen mit einem Programm? In einer Batch-Datei? Für beides wäre diese Syntax plausibel.
    Im Batch-Fall ist es der erste Parameter der an die Batch-Datei übergeben wurde.
    Im Registry-Verknüpfungsfall ist es der Pfad zur aufzurufenden Datei.
    Weitere Parameter werden durchnummeriert oder komplett per %* übergeben.
    Mit dem Working-Directory hat es nicht wirklich was zu tun.
    Das Working-Dir entspricht standarmäßig (außer es wird anders aufgerufen) dem Pfad des Programms das die Ausführung der Datei veranlasst.
    Als Beispiel 3-Dateien:

    Code
    C:\Test\Test.exe
    C:\Daten\Test.xyz
    C:\Start\Start.exe


    .xyz-Dateien seien hier in der Registry mit dem Programm Test.exe über den Aufruf "C:\Test\Test.exe" "%1" verknüpft.
    Die Datei Start.exe sei ein AutoIt-Programm welches lediglich die Zeile ShellExecute("C:\Daten\Test.xyz") enthält.
    Ruft man das ganze nun auf so bekommt die Test.exe als ersten Parameter (die %1) "C:\Daten\Test.xyz" und als Working-Dir wird standarmäßig C:\Start gesetzt. Es hat also nicht zwangsläufig etwas mit dem Pfad zur aufzurufenden Datei zu tun sondern vom Programm was den Aufruf veranlasst.
    Der Explorer setzt z.B. das Working-Dir automatisch auf den aktuellen Pfad wenn man eine Datei aufruft. Dann ist es gleich. Aber prinzipiell sind diese unabhängig voneinander.

    Einmal editiert, zuletzt von AspirinJunkie (23. Juli 2011 um 10:56)

  • Das ist der Code den ich in der Windows Registry eingefügt habe.Damit soll sich beim Aufruf mit "cod4://" in der URL des Webbrowsers das Game Call of Duty 4 starten.Er beginnt zwar den Start, denn es erscheint der SplashScreen vom Game. Doch dann bricht er ab, indem er mir diese Fehlermeldung um die Ohren knallt:

    Zitat

    Error during initializing.

    No IWD files in /main found.

    Es wird also nicht das Verzeichnis der EXE als WorkingDir erkannt. Wie kann ich das ändern?

  • Bisher hatte ich das immer mit Shellexecute gemacht, indem ich die ganzen "infos" mit angegeben hab...
    Ich arbeite grad an einem Update meines Serverjoiners. Weil aber bei jedem die Games anders abgespeichert sind, macht es ja eigentlich
    nur Sinn, den Pfad zum Game aus der Registry auszulesen... nun haben ja auch alle verschiedene WindowsVersionen (XP,Vista,7, 32/64bit)
    und da sind die Registry Einträge auch alle verschieden...
    ... loool, verdammt, mir ist grad klar geworden, dass egal wie ich es anstelle, man nicht um die Pfadeingabe für das Programm herum kommt,
    denn selbst wenn ich von meinem Program das "cod4-Protokoll" eintragen lasse, braucht man ja trotzdem den Pfad...
    okay, dann werd ich wohl diesen teil des Programms so lassen müssen, wie es ist :(