Feedback

C# - Datei öffnen

Veröffentlicht von am 6/15/2009
(2 Bewertungen)
Wie öffnet man verschiedene Dokumente?
Am Besten mit dem Programm, dass unter Windows dafür bestimmt ist.
Wie macht man das?
Man startet einen Prozess und übergibt ihm das Dokument, den Rest erledigt Windows.
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.EnableRaisingEvents = false;
process.StartInfo.FileName = "Dateiname mit Pfad";
process.Start();
Abgelegt unter Datei eröffnen, .

6 Kommentare zum Snippet

Keks1911 schrieb am 7/23/2010:
Im produktiven Einsatz bitte vorher sicherstellen, dass so etwas nicht für beliebige Dateien funktioniert. Mit .exe, .com und .vbs holt man sich schnell eine Remote-Code-Execution-Schwachstelle ins Produkt. Am besten den Dateinamen fest vorgeben.
dariusarnold schrieb am 1/13/2013:
Wie wärs einfach mit
System.Diagnostics.Process.Start("datei.endung")
Koopakiller schrieb am 3/19/2014:
@dariusarbold
Das kommt auf das Selbe heraus. Manchmal möchte man aber noch Events oder Eigenschaften von einem erstellten Prozess haben. Da muss man dann die lange Variante nehmen.
dariusarnold schrieb am 3/19/2014:
Da hast du recht. Aber wenn man ihn nur Starten will muss man keine extra Instanz von Process anlegen, was ja auch nur Arbeitsspeicher frisst. Vor allem, weil hier ja davon ausgegangen wird, dass man keine Events haben möchte:
process.EnableRaisingEvents = false;
Koopakiller schrieb am 3/19/2014:
Mag ja sein, aber die meisten Snippets sind ohne Anpassung nicht wirklich einsetzbar. Darum finde ich es schon besser die lange Variante zu zeigen. Wobei ein Hinweis auf die kurze Variante sicherlich nicht schlecht wäre.

Arbeitsspeicher wird deswegen aber auch nicht weniger oder mehr gebraucht. Deine Kurzvariante erstellt intern auch ein Process-Objekt.
http://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/Process.cs#5a01d1705abb24d6
Auf der Seite kannst du dich einfach durch die Methoden klicken. Dann findest du auch die lange Initialisierung.
TBBsolutions schrieb am 3/20/2014:
Die Variante bietet die Möglichkeit ein WorkingDirectory anzugeben, ich hatte gerade vor kurzem auf einem System das Problem, dass die exe.config durch einen solchen direkten Start nicht mehr gefunden wurde, durch das angeben des WDs hat es geklappt.

System.Diagnostics.Process p = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo pinfo = new System.Diagnostics.ProcessStartInfo(@"C:\ordner\ordner2\programm.exe", "ggf. Parameter");
pinfo.WorkingDirectory = @"C:\ordner\ordner2\";
p.StartInfo = pinfo;
p.Start();

 

Logge dich ein, um hier zu kommentieren!