Ich würde gerne ein Programm mit einer eigenen Dateiendung machen. Hier im Forum habe ich einen Code gefunden, der einen Fehler ausgibt. Aber warum?
Hier die Anleitung:
1. Du fügst in den Projekteigenschaften unter "Einstellungen" eine neue hinzu: Name "registered", Typ Boolean, Wert "False".
2. Folgender Code in Form_Load, du musst ihn noch anpassen, ich habe jetzt als Beispiel die Endung ".setxt" registrieren lassen, ".setxt" steht für "Easytext-Datei".
Hier der Code:
Habe alles so gemacht wie angegeben...
Hier die Anleitung:
1. Du fügst in den Projekteigenschaften unter "Einstellungen" eine neue hinzu: Name "registered", Typ Boolean, Wert "False".
2. Folgender Code in Form_Load, du musst ihn noch anpassen, ich habe jetzt als Beispiel die Endung ".setxt" registrieren lassen, ".setxt" steht für "Easytext-Datei".
Hier der Code:
VB.NET-Quellcode
- If My.Settings.registered = False Then
- Dim objSubKey As Microsoft.Win32.RegistryKey
- Dim objSubKey2 As Microsoft.Win32.RegistryKey
- Dim Wert As String = "Easytext-Datei" ' Einfach für dich anpassen
- Dim sKey As String = ".setxt" ' Deine Dateiendung
- Dim sKey2 As String = ".setxt\ShellNew" ' Deine Dateieindung und "\ShellNew"
- Dim sEntry As String = "Content Type" ' Das muss so bleiben
- Dim sValue As String = "text/plain" ' Das auch
- Dim sEntry2 As String = "PerceivedType" ' Das auch
- Dim sValue2 As String = "text" ' Das auch
- Dim sEntry3 As String = "Nullfile" ' Das auch
- [color=#ff0000]objSubKey = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey) ' Das alles so lassen[/color]
- objSubKey.SetValue("", Wert)
- objSubKey.SetValue(sEntry, sValue)
- objSubKey.SetValue(sEntry2, sValue2)
- objSubKey2 = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey2)
- objSubKey2.SetValue(sEntry3, "")
- Dim objSubKey3 As Microsoft.Win32.RegistryKey
- Dim sKey3 As String = "Easytext-Datei" ' Nochmal wiederholen (das was du auch bei Value angegeben hast)
- Dim sKey4 As String = "Easytext-Datei\shell\open\command" ' Nochmal wiederholen und "\shell\open\command lassen
- Dim skey5 As String = "Easytext-Datei\DefaultIcon" ' "\DefaultIcon auch so lassen
- Dim sValue3 As String = "Easytext-Datei" ' Nochmal wiederholen ;)
- Dim objSubKey5 As Microsoft.Win32.RegistryKey
- Dim sValue5 As String = """" + My.Application.Info.DirectoryPath + "\EasyText.exe" + """" + " %1" ' Den Namen deiner Exe eintragen
- Dim sValue6 As String = """" + My.Application.Info.DirectoryPath + "\icon.ico" + """" ' jetzt musst du einen Icon erstellen, ihn in "icon.ico" umbennen und ihn in den selben Ordner wie die Exe packen
- Dim objSubKey4 As Microsoft.Win32.RegistryKey ' Das alles so lassen
- objSubKey3 = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey3) ' Das auch
- objSubKey3.SetValue("", sValue3)
- objSubKey4 = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey4)
- objSubKey4.SetValue("", sValue5)
- objSubKey5 = My.Computer.Registry.ClassesRoot.CreateSubKey(skey5)
- objSubKey5.SetValue("", sValue6)
- My.Settings.registered = True
- My.Settings.Save()
- Else
- Try
- If My.Application.CommandLineArgs.Count > 0 Then
- Dim s As String = Environment.CommandLine
- ' s enthält jetzt 2 Pfade: Der Pfad der Datei, die geöffnet wurde und den Pfad zu deiner Exe. Du kannst das ganze mit Split trennen und schon hast du´s.
- End If
- Catch
- MessageBox.Show(Err.Description, "Fehler")
- End Try
- End If
- End Sub
Der Zugriff auf Registrierungsschlüssel HKEY_CLASSES_ROOT\setxt wurde verweigert
Habe alles so gemacht wie angegeben...