Active Desktop und EXE-Dateien
Ole Albers
- html
0 Joe King
Hallo, allerseits.
Bevor Ihr stöhnt: Nein, es ist nicht die tausendste Anfrage, wie man über eine HTML-Seite externe Dateien öffnet, sondern vielmerh eine Lösung :) Und da viele wie ich, per Google sicherlich hier landen sollte der Platz hier genau richtig sein. Bitte komplett durchlesen und vor allem den Sicherheitshinweis zur Endung am Schluß nicht vergessen.
Ich habe verzweifelt das Internet und auch dieses Forum nach einer Lösung durchsucht, wie man über den ACtive Desktop externe Anwendungen starten kann. Nachdem auch die Tipps hier nicht wirklich zu einem Ergebnis geführt haben, habe ich mal etwas nachgedacht :) und bin auf eine Lösung gekommen.
Die Lösung ist wie folgt:
1. Datei erstellen mit der Endung ".norisk"
2. Diese Datei im Explorer öffnen und als Programm norisk.exe angeben (zu finden unter http://www.heinztomato.de/cs) und dabei den Haken "Dateityp immer mit dem ausgewählten Programm öffnen" nicht vergessen
Dadurch ist die Endung "norisk" jetzt mit dem Programm assoziiert. Das Programm macht nix weiter, als die .norisk-Datei zu öffnen, und den Befehl auszuführen, der in der ersten Zeile steht.
eine notepad.norisk mit dem inhalt "notepad neu.txt" würde also notepad mit dem Parameter neu.txt öffnen.
3. Einen Link auf die gewünschte .norisk-Datei legen.
Nun muss nur noch einmalig "Vor dem Öffnen des Dateityps immer nachfragen" entfernt werden und die Dateien werden automatisch von der HTML-Seite aus geöffnet.
Diese Methode ist zwar mit etwas (einmaliger) Arbeit verbunden, aber dafür "sauber" (es werden keine Sicherheistlöcher geöffnet). Zu diesem Thema empfehle ich übrigens das ".norisk" nur als Beispiel zu nehmen. Denkt Euch eine eigene Endung aus, denn nach dem Einstellen funktioniert das natürlich auch auf Websiten im Netz!
Falls noch Fragen sind, einfach mailen. Und um jede Paranoia auszuschalten gibts den Quellcode der C#-Datei hier auch noch, damit man sieht was (wie wenig) das Programm eigentlich macht:
using System;
using System.IO;
using System.Diagnostics;
namespace norisk {
class norisk {
/// <summary>
/// Klasse um Ausführbare Dateien aus HTML aus zu starten.
/// </summary>
[STAThread]
static void Main(string[] args) {
string datei="";
string parameter="";
if (args.Length<1) {
Console.WriteLine("Hilfstool. Nie direkt aufrufen, gelle?");
} else {
try {
TextReader infoFile=new StreamReader(args[0]);
string zeile=infoFile.ReadLine();
zeile.Trim();
int leerpos=zeile.IndexOf(" ");
if (leerpos>0) {
datei=zeile.Substring(0,leerpos);
parameter=zeile.Substring(leerpos+1,zeile.Length-leerpos-1);
} else {
parameter="";
datei=zeile;
}
} catch (Exception ex) {
Console.WriteLine("Fehler beim lesen der Datei! Meldung:"+ex.Message);
return;
}
ProcessStartInfo psi=new ProcessStartInfo(datei,parameter);
psi.WindowStyle=ProcessWindowStyle.Normal;
try {
Process.Start(psi);
} catch ( Exception ex) {
Console.WriteLine("Fehler bei der Ausführung: '"+ex.Message);
}
}
}
string dummy=Console.ReadLine();
}
}
Gruß, Ole
Hey, du bist gut...
Respekt!