| Autor |
Beitrag |
Holgerwa
      
Beiträge: 325
WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
|
Verfasst: Mo 11.07.05 15:44
Hallo,
gibt es eine Möglichkeit festzustellen, ob ein bestimmter Dateityp eigenständig lauffähig ist (z.B. .exe) oder eine Anwendung benötigt (z.B. .txt)?
Bei den normalen Typen wie .exe, .com. und .bat ist das ja klar, aber es gibt wohl noch einige weitere, wahrscheinlich von der Windows-Version abhängende, die ebenfalls eigenständig lauffähig sind, wie z.B. .scr.
Wenn das bei jeder Windows-Version gleich ist, bräuchte ich natürlich nur eine kleine Liste der entsprechenden Erweiterungen.
Danke!
Holger
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mo 11.07.05 16:07
Hallo,
du kannst die Dateitypen aus der Registry laden. Erstmal guckst du was unter
HKEY_CLASSES_ROOT\.Dateiendung steht. Dieser Wert sagt dir, womit die Datei assoziert wird. Dann steht in
HKEY_CLASSES_ROOT\Was da grad stand\shell\open\command
womit man es öffnen kann. Wenn dort etwas wie %1 steht, dann ist dieser Dateityp selbständig ausführbar.
Gruß,
maxk
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Holgerwa 
      
Beiträge: 325
WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
|
Verfasst: Mo 11.07.05 16:24
Hallo,
@maxk: Danke für die Hilfe! Das bringt mich um einiges weiter
Holger
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Mo 11.07.05 17:14
Juhu, selbst lauffähige Textdateien  Wozu brauchst du sowas?
AXMD
|
|
Holgerwa 
      
Beiträge: 325
WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
|
Verfasst: Mo 11.07.05 17:36
Hallo,
Juhu AXMD: das hast Du falsch gelesen  , ich hatte .txt Dateien als Beispiel für einen Dateityp genannt, der NICHT selbst lauffähig ist.
Mir geht es darum zu erfahren, ob ein bestimmter Dateityp "noch eine Anwendung benötigt", um ihn auszuführen (also z.B. txt: "notepad text.txt") oder ob er alleine lauffähig ist (also z.B. exe: "notepad.exe").
Holger
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Mo 11.07.05 17:40
War mir klar, hab nur einen Scherz gemacht
AXMD
|
|
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Mo 11.07.05 18:10
 du scherzkeks du 
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mo 11.07.05 18:31
Holgerwa hat folgendes geschrieben: | Juhu AXMD: das hast Du falsch gelesen , ich hatte .txt Dateien als Beispiel für einen Dateityp genannt, der NICHT selbst lauffähig ist.
Holger |
Dann hat maxk aber was falsches geschrieben: Wenn es einen Command-Handler in der Registry gibt ist der Dateityp nicht selbstädnig ausführbar, sondern braucht ein Programm!
Alstar
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mo 11.07.05 18:41
Nur, weil du mich einmal erwischt hast, mach ich nicht alles falsch  Wenn der Dateityp keine Zuordnung in der Registry hat, dann ist er nicht ausführbar. Ich kann mich erinnern mal versehentlich den HKEY_CLASSES_ROOT\.exe Schlüssel gelöscht zu haben. Danach habe ich keine exe-Dateien mehr geöffnet bekommen (naja, jedenfalls musste ich tricksen). Windows fragt leider für jede Aktion in der Registry nach. Wenn man versucht eine Datei auszuführen, wird das ausgeführt, was in der Registry steht. Steht dort als Programm %1, %L, %S, etc., dann startet Windows das Programm. Steht dort "calc.exe", macht Windows bei (fast) jedem Programm den Taschenrechner auf, etc. Das hat Vor- und Nachteile: Ein großer Vorteil ist, dass man somit (zumindest theoretisch) vor den Start eines Programms eines Virenscanner schalten könnte (oder irgendwas vergleichbares). Der Nachteil: Löscht oder ändert man voreilig, hat man ein Problem
Übrigens: Windows führt das aus, was in der Registry steht. Wenn es sich dabei nicht um eine ausführbare Datei handelt, gibt es entweder eine Fehlermeldung oder gar nichts. Spätestens hier muss also ein Programm stehen. Allerdings gibt es auch hier wieder Ausnahmen für Programme wie den IE, Office und andere Microsoftprodukte.
Gruß,
maxk
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Holgerwa 
      
Beiträge: 325
WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
|
Verfasst: Mo 11.07.05 19:05
Hallo,
@Alstar: Ich glaube schon, daß das Vorgehen von maxk so funktioniert.
Wenn ich z.B. ".exe" nachsehe, bekommen ich als Nächstes "exefile", unter welchem dies steht:
HKEY_CLASSES_ROOT\exefile\shell\open\command: "%1" %*
Und hier sehe ich, daß es keine weitere Anwendung gibt, die ein "exefile" ausführt.
Bei ".txt" finde ich "txtfile", und dort:
HKEY_CLASSES_ROOT\exefile\shell\open\command: %SystemRoot%\system32\NOTEPAD.EXE %1
Das wird also mit Notepad.exe ausgeführt.
Oder übersehe ich hier etwas?
Holger
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mo 11.07.05 19:22
Ja klar, aber er meinte doch
maxk hat folgendes geschrieben: | | [...]Wenn dort etwas wie %1 steht, dann ist dieser Dateityp selbständig ausführbar.[...] |
Und das ist schlichtweg ... naja ich will jetzt nicht sagen falsch, aber irgendwie doch ..
Alstar
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Mo 11.07.05 19:38
Alstar hat folgendes geschrieben: | Ja klar, aber er meinte doch
maxk hat folgendes geschrieben: | | [...]Wenn dort etwas wie %1 steht, dann ist dieser Dateityp selbständig ausführbar.[...] |
Und das ist schlichtweg ... naja ich will jetzt nicht sagen falsch, aber irgendwie doch ..  |
Kannst du das auch begründen?  %1 ist das 1. Argument und das ist in dem Fall der Dateiname. Und wenn kein anderer Dateiname vor dem %1 steht, wird die Datei direkt ausgeführt und nicht an ein anderes Programm übergeben.
_________________ JSXGraph
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mo 11.07.05 19:56
Das ist einfach eine logische Begründung. Aus seiner Argumentation ging hervor: " Immer wenn eine Variable wie "%1" vorkommt, ist es eine selbstständig ausführbare Datei" Und das ist zwar in manchen fällen so, aber nicht immer
Alstar
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mo 11.07.05 21:39
Typischer Fall von falsch formuliert  Bei Windows läuft das mit dem %1 = 1. Parameter, %2 = 2. Parameter irgendwie anders. Da gibt es noch %L für den langen Dateinamen und %S für den kurzen. Ich hatte mal versucht das näher zu erkunden, aber irgendwie habe ich es dann aufgegeben.
Und %1 muss dann natürlich am Anfang stehen 
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mo 11.07.05 21:43
maxk hat folgendes geschrieben: | [...]
Und %1 muss dann natürlich am Anfang stehen  |
Du hättest nicht das muss betonen sollen, sondern das am Anfang!!
Und da reicht es nicht aus, dass der Wert in der Registry vorhanden ist, sondern er muss als einzelner Parameter verankert sein ...
Alstar
p.s: mein 400 Post 
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mo 11.07.05 21:53
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Alstar
      
Beiträge: 827
|
Verfasst: Mo 11.07.05 21:58
|
|