Textdatei mit der ihr zugewiesenen Anwendung öffnen

Tikonteroga

Erfahrenes Mitglied
Hallo,

ich erzeuge in einer .NET Anwendung eine Textdatei mit einer bestimmten Dateiendung und einem bestimmten Format.

Nachdem ich die Datei im Dateisystem erzeugt habe, würde ich sie gerne aus meiner .NET Anwendung herus mit der Anwedung öffnen, die für das Öffnen von Dateien mit dieser Dateiendung zuständig ist.

Falls es keine Anwendung gibt, die für das Öffnen von Dateien mit dieser bestimmten Dateiendung zuständig ist, möchte ich die Datei mit Word Pad öffnen.

Wie kann ich das in .NET realisieren ?
 

Alexander Schuc

crazy-weasel
Hi.

Das Starten der Datei mit dem damit verknüpften Programm ansich wäre einfach. Dazu brauchst du einfach nur bei Process.Start den Pfad zur Datei angeben.

Wenn du aber vorher sehen willst ob überhaupt ein Programm zugewiesen ist, kannst du das folgende Snippet benutzen.
Es schaut in der Registry nach ob die Endung eingetragen ist, und gibt wenn etwas gefunden wurde den Pfad zum Programm zurück. Wenn nichts gefunden wurde, wird ein leerer String zurückgegeben.

C#:
public static string GetAssociatedProgram(string FileExtension)
{
	// Returns the application associated with the specified
	// FileExtension
	// ie, path\denenv.exe for "VB" files
	Microsoft.Win32.RegistryKey objExtReg = Microsoft.Win32.Registry.ClassesRoot;
	Microsoft.Win32.RegistryKey objAppReg = Microsoft.Win32.Registry.ClassesRoot;
	string strExtValue = null;
	try
	{
		// Add trailing period if doesn't exist
		if (FileExtension[0] != '.')
			FileExtension = "." + FileExtension;

		// Open registry areas containing launching app details
		objExtReg = objExtReg.OpenSubKey(FileExtension.Trim());
		strExtValue = objExtReg.GetValue(null) as string;
		objAppReg = objAppReg.OpenSubKey(strExtValue + "\\shell\\open\\command");
		// Parse out, tidy up and return result
		string[] SplitArray = (objAppReg.GetValue(null) as string).Split('"');

		if (SplitArray[0].Trim().Length > 0)
		{
			return SplitArray[0].Replace("%1", "");
		}
		else
		{
			return SplitArray[1].Replace("%1", "");
		}
	}
	catch
	{
		return string.Empty;
	}
}

(Der Code stammt von Which Program Handles that File Extension? und wurde nach C# konvertiert..)

lg,..