Registry - shell/command/open - "Ausführen in"?

flashray

Erfahrenes Mitglied
Hallo,

ich möchte in die Registry einen Programmaufruf eintragen. Das ist alles kein Problem. Ich finde nur keine Option "Ausführen in" die ich von den Windows Verknüpfungen kenne.

Unter anderem füge ich folgenden Eintrag in die Registry:
[HKEY_CLASSES_ROOT\myfile\shell\open\command]
@="C:\\Programme\\myApplication\\myApplication.exe %1"

Wie und wo kann ich in der Registry jetzt auch den Pfad angeben in welcher das Programm laufen soll?

Vg Erdal
 
Das gibt es nicht. Da muss dein Programm schon selber den Pfad setzen.

Beim Aufruf hast du vermutlich den aktuellen Pfad des Shortcuts gesetzt (bzw. der Datei die als Parameter übergeben wird).
 
Hallo Endurion,

wie ist dann das übliche Verfahren? Wie sollte ich die Pfade zu den Resourcen wie Bilder oder Konfigurationsdatei im Quellcode setzen, damit das Programm diese auch findet. Bisher hatte ich die Pfade relativ implementiert. Tue ich das Programm direkt aus seinem Ort starten gibt es keine Probleme. Hab dann mein Programm mit einem Dateityp mit Hilfe der Registry verknüpft. Doppelklicke ich jetzt eine dieser Dateien, startet das Programm ohne die Ressourcen, d.h. das Icon fehlt die anderen Bilder fehlen etc.
Absolute Pfade für die Ressourcen sind nicht ohne weiteres möglich, da die Installationsroutine das Programm an einen beliebigen Pfad speichern kann. Wie lautet die Standartlösung zu diesem Problem?

Vg Erdal
 
Hi.

Du kannst mit
Code:
GetModuleFilename(NULL);
den vollständigen Pfad zu deinem Programm herausbekommen. Da mußt du nur den Dateinamen wegschneiden (alles hinter dem letzten Backslash bzw. Slash) und dann kannst du mit SetCurrentDirectory in das Verzeichnis wechseln - dann sollten die ganzen relativen Pfadangaben funktionieren.

Gruß
 
Dem kann ich nur beipflichten. Ich bin schon seit langem dazu übergegangen, mir mit GetModuleFilename absolute Pfade zu basteln. Das ist das einzig Wahre. Das klappt natürlich nur, wenn die Resourcen auch immer bei der EXE liegen, sonst muss man sichj mit Registrykeys/Config-Files behelfen.
 
Zurück