Problem mit Dateiendung-Registrierung

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von PhoenixBlaster.

    Problem mit Dateiendung-Registrierung

    Um eine Dateiendung zu registrieren habe ich folgenden Code gefunden:

    VB.NET-Quellcode

    1. Private Function Registerfile(ByVal Dateiendung As String, ByVal Name As String, ByVal Pfad As String, ByVal Iconpfad As String, ByVal Add_to_ShellNew As Boolean) As Boolean
    2. Dim objSubKey As Microsoft.Win32.RegistryKey
    3. Dim objSubKey2 As Microsoft.Win32.RegistryKey
    4. Dim objSubKey3 As Microsoft.Win32.RegistryKey
    5. Dim objSubKey5 As Microsoft.Win32.RegistryKey
    6. Dim objSubKey4 As Microsoft.Win32.RegistryKey
    7. objSubKey = My.Computer.Registry.ClassesRoot.CreateSubKey(Dateiendung)
    8. objSubKey.SetValue("", Name)
    9. If Add_to_ShellNew = True Then
    10. objSubKey2 = My.Computer.Registry.ClassesRoot.CreateSubKey(Dateiendung & "\ShellNew")
    11. objSubKey2.SetValue("Nullfile", "")
    12. End If
    13. objSubKey3 = My.Computer.Registry.ClassesRoot.CreateSubKey(Name)
    14. objSubKey3.SetValue("", Name)
    15. objSubKey4 = My.Computer.Registry.ClassesRoot.CreateSubKey(Name & "\shell\open\command")
    16. objSubKey4.SetValue("", """" + Pfad + """" + " %1")
    17. objSubKey5 = My.Computer.Registry.ClassesRoot.CreateSubKey(Name & "\DefaultIcon")
    18. objSubKey5.SetValue("", """" + Iconpfad + """")
    19. MessageBox.Show("Die Dateiendung " & Dateiendung & " wurde erfolgreich registiert.", "Info")
    20. End Function


    Nur wenn ich eine Endung registrieren will bekomme ich bei dieser Zeile...

    VB.NET-Quellcode

    1. objSubKey = My.Computer.Registry.ClassesRoot.CreateSubKey(Dateiendung)

    ...den Fehler: "Der Zugriff wurde verweigert"

    Geht das nicht ohne Admin-Rechte?
    Wenn nicht, kann man das dann irgendwie mit InnoScript machen, wenn ja wie?

    MFG
    PhoenixBlaster :)
    Kannst du "regedit" öffnen ohne von der UAC behindert werden? ;)

    Btw: Warum greifst du über 2 verschiedene Namespaces auf die Registry zu?
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Guck, und wenn du es nicht darfst ohne Adminrechte, dann dein Programm auch nicht ;) (UAC heißt User Access Control soweit ich weiß).

    Du nutzt einmal Microsoft.Win32 und dann My.Computer (Ersteres ist zu empfehlen)
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    PhoenixBlaster schrieb:

    Wenn nicht, kann man das dann irgendwie mit InnoScript machen, wenn ja wie?

    Ja, kann man (und sollte man auch allgemein während des Setups, nicht aus dem fertig installierten Programm, wenn es nicht mit Admin-Rechten läuft).

    Wie? Schau in die InnoSetup-Hilfe. Da steht es ausführlich drin, sogar mit Beispiel.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.