Ausführbare Datei erkennen ?

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Ausführbare Datei erkennen ?

Beitrag von Vera »

Hallo,
für mein LauncherPrpjekt möchte ich gerne zwischen ausführbaren Dateien und nicht-ausführbaren Dateien unterscheiden können, denn die RunProgram-Aufrufe sind unterschiedlich.

Eine ausführbare Datei läßt sich direkt aufrufen, während eine normale Datei den Befehl für das zu verwendende Standartprogram bräuchte.

Code: Alles auswählen

RunProgram("/DateiPfad/Program") 
RunProgram("xdg-open", "/DateiPfad/Datei", "") 
Ein GetFileType() sozusagen 8)

Grüß ~ Vera
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:50, insgesamt 1-mal geändert.
~ DELETE ~
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Ausführbare Datei erkennen ?

Beitrag von Vera »

Danke Dir :-)

Die Idee mit dem Ausschluß ist gut ... aber scheinbar nicht für alle Dateien geeignet. XML würde bei mir so nicht geöffnet, da es auch 0 zurück gibt.

Aber beim hin&her Testen habe ich nun festgestellt, dass man scheinbar ohne Probleme eine ausführbare Datei, auch mit dem Zusatz 'öffne mit default Programm' erfolgreich aufrufen kann.

Find' ich ja nicht gerade stimmig, doch wenn's so auch läuft, dann übernehm ich's gerne.

cheers ~ Vera
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Ausführbare Datei erkennen ?

Beitrag von ts-soft »

Ob eine Datei "Ausführbar" ist, erkennt man am Dateiattribut "ausführen" ("exec").
Siehe Hilfe.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Ausführbare Datei erkennen ?

Beitrag von Vera »

Ja, die Dateiattribute hatte ich, bevor ich gefragt habe, alle an unterschiedlichsten Dateien ausprobiert, und natürlich sind sie alle gleichermaßen 'ausführbar', es sei denn zB die Rechte wären beschränkt.

Damit lassen sich jedoch die Dateitypen nicht differenzieren.

Glaub nicht, ich hätte die Hilfe nicht vorher durchsucht und ausser DirectoryEntryAttributes() und GetFileAttributes() war da nichts angeboten.
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Ausführbare Datei erkennen ?

Beitrag von ts-soft »

Versteh ich nicht.

Eine ausführbare Datei, ähnlich einer Exe unter Windows, hat ein Dateiattribut ala: #PB_FileSystem_ExecUser oder
#PB_FileSystem_ExecAll und ist somit "ausführbar". Dies ist nicht an einer bestimmten Dateiextension erkennbar, sondern
kann auch jede z.B. Textdatei sein. Bei einer Textdatei wird dann der folgende Text interpretiert: "#!/bin/bash" in der ersten
Zeile. Das heißt, der Text sollte mit der bash ausgeführt werden, hier kann aber auch alles mögliche andere stehen.

Alle Dateien, die kein "Ausführen" Attribut haben, müssen dann über "xdg-open", so es denn installiert ist, ausgeführt werden.
Dies setzt aber voraus, das der Mime-Typ bekannt ist und unterstützt wird. Unter neueren Linux-Distributionen ist das im
allgemeinen der Fall.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Ausführbare Datei erkennen ?

Beitrag von Vera »

Hi, ich habe meinen Versuchsaufbau nochmal erstellt:

Code: Alles auswählen

Value.l = GetFileAttributes("/path/to/file") 
   
If Value = -1 
    Debug "Fehler beim Lesen der Datei-Attribute!"
  Else 
    If Value & #PB_FileSystem_ReadUser   : txt$ + "ru-" : Else : txt$+"-0-" : EndIf 
    If Value & #PB_FileSystem_WriteUser  : txt$ + "wu-" : Else : txt$+"-0-" : EndIf 
    If Value & #PB_FileSystem_ExecUser   : txt$ + "exU-" : Else : txt$+"-0-" : EndIf 
    If Value & #PB_FileSystem_ReadGroup  : txt$ + "rg-" : Else : txt$+"-0-" : EndIf 
    If Value & #PB_FileSystem_WriteGroup : txt$ + "wg-" : Else : txt$+"-0-" : EndIf 
    If Value & #PB_FileSystem_ExecGroup  : txt$ + "exG-" : Else : txt$+"-0-" : EndIf 
    If Value & #PB_FileSystem_ReadAll    : txt$ + "ra-" : Else : txt$+"-0-" : EndIf 
    If Value & #PB_FileSystem_WriteAll   : txt$ + "wa-" : Else : txt$+"-0-" : EndIf 
    If Value & #PB_FileSystem_ExecAll    : txt$ + "exA-" : Else : txt$+"-0-" : EndIf 
  Debug txt$ 
 EndIf
und an diversen Dateien ausprobiert und diese Ergebnisse erhalten:
; ru-wu-exU-rg--0-exG-ra--0-exA- ... ausführbar
; ru-wu--0-rg--0--0-ra--0--0- ... pb
; ru-wu--0-rg--0--0-ra--0--0- ... html
; ru-wu--0-rg--0--0-ra--0--0- ... ini
; ru-wu--0-rg--0--0-ra--0--0- ... txt
; ru-wu--0-rg--0--0-ra--0--0- ... Text ohne extension
; ru-wu-exU-rg--0-exG-ra--0-exA- ... ausführbar
; ru-wu-exU-rg--0-exG-ra--0-exA- ... ausführbar
; ru-wu-exU-rg-wg-exG-ra-wa-exA- ... xml
; ru-wu-exU-rg-wg-exG-ra-wa-exA- ... png
; ru-wu-exU-rg-wg-exG-ra-wa-exA- ... bmp
; ru-wu-exU-rg-wg-exG-ra-wa-exA- ... wav
Da fragt sich doch, ob ich nicht besser den Aufruf mit default-Anwendung nutze, da es bei ausführbaren Programmen ja scheinbar keine Probleme macht? ... während aber im anderen Fall, mit der obigen If-Schleife zB eine xml nicht geöffnet würde

Das mit dem Mime-Typ ist mir bewußt. Dazu hatte ich in der LinuxApiLib schon eine Routine gefunden, mit der man das zugeordnete Programm ermitteln könnte. Das sprengt aber an dieser Stelle meinen simplen LauncherAnsatz und lass das erstmal unberücksichtigt.

Zunächt war mir nur grundsätzlich wichtig, dass es nicht ausschließlich nur für aufzurufende Anwendungen funktioniert, sondern mehr oder weniger für alle Dateien.

LG ~ Vera
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Antworten