none
Registry RRS feed

  • Frage

  • Hallo Leute

    Ich habe ein echtes Problem. Ich will ein Programm schreiben, welches mir den Wert "%SystemRoot%\ShortcutArrow.ico,0" in die Zeichenfolge "29" des Pfades "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" in die Registry schreibt. Jedoch erhalte ich kein Ergebnis, weder eine Fehlermeldung, noch einen Key in der Registry.

    Mein Code:

    Imports Microsoft.Win32
    
    Public Class Form1
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
          'Code 1:
          Dim regKey As RegistryKey
          regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons", True)
          regKey.SetValue(29, "%SystemRoot%\ShortcutArrow.ico,0")
          regKey.Close()
          'Code 2:
          My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons", True).SetValue(29, "Erfolgreich")
        Catch ex As Exception
          MsgBox(ex.Message, MsgBoxStyle.Exclamation, Application.ProductName)
        End Try
      End Sub
    End Class
    

    Im Grunde genommen sollten beide Codes das Selbe bewirken, aber ist eigentlich auch egal, denn ich habe sie auch einzeln getestet. Leider erfolglos.

    MFG Yves Riedener


    Vielen Dank, Yves Riedener http://www.vanillapps.com
    Samstag, 23. Juli 2011 21:51

Antworten

  • Hi,

    "unbedingt" ist immer etwas unglücklich gewählt.

    Um eine Anwendung als x64 kompilieren zu lassen, gehe zu:

    Projekteinstellungen (rechte Maustaste aufs Projekt -> Eigenschaften)
     -> Reiter "Kompilieren"
       -> Button "Erweiterte Kompilierungsoptionen..."
         -> Ziel-CPU
           -> x64

    Damit läuft deine Anwendung allerdings nicht mehr auf 32 Bit Systemen. AnyCPU wäre daher besser geeignet.

    Zudem gibt es dann noch das Problemchen, dass andere 32 Bit Anwendungen dann wieder auf Wow6432Node zugreifen und deine Einstellung dort dann ggfs. nicht verfügbar ist. Je nachdem, was Du da eigentlich machen willst, wäre es daher notwendig, dass Du in beide Nodes schreibst.

    BTW: Deine Sig ist doch etwas zu lang, zudem ist hier keine Projektbörse, in der die Informationen interessant wären.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Sonntag, 24. Juli 2011 14:41
    Moderator

Alle Antworten

  • Hi,

    zum einen braucht dein Programm Administratorrechte, um überhaupt in HKLM schreiben zu können.

    Zum anderen ist der richtige Weg auch davon abhängig, wie deine Anwendung kompiliert wurde und auf welchem OS sie läuft.

      http://stackoverflow.com/questions/2039186/c-reading-the-registry-and-wow6432node-key

    Falls deine Anwendung als 32 Bit kompiliert wurde, sie aber auf einem 64 Bit System läuft, könnte es sein, dass der Key im Wow6432Node vorhanden ist. Umgekehrt gilt das natürlich auch.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Samstag, 23. Juli 2011 22:36
    Moderator
  • Also Admin-Rechte habe ich und im Wow.. Ordner ist der Key vorhanden, doch er muss unbedingt in die andere Registry wie kann ich mein Programm 64x fähig kompilieren?
    Vielen Dank, Yves Riedener http://www.vanillapps.com Mein Computer: OS: Windows Ultimate x64 CPU: Intel i5 2.66GHz 4c RAM: 8GB Kingston Grafik: NVIDIA GeForce GTX 260 Point of View Speicher: -System: SSD von Samsung -Dateien: HD von WesternDigital Sprachen: -Deutsch: Muttersprache -Französisch: Am lernen -Englisch: Gutes Verständnis, Grammatik am lernen(zum Thema Computer) Programmiersprachen: -Visual Basic: Gut (Visual Basic 2010) -AutoIt: Gut (Version 3) -Java: Gut (Netbeans)
    Sonntag, 24. Juli 2011 13:55
  • Hi,

    "unbedingt" ist immer etwas unglücklich gewählt.

    Um eine Anwendung als x64 kompilieren zu lassen, gehe zu:

    Projekteinstellungen (rechte Maustaste aufs Projekt -> Eigenschaften)
     -> Reiter "Kompilieren"
       -> Button "Erweiterte Kompilierungsoptionen..."
         -> Ziel-CPU
           -> x64

    Damit läuft deine Anwendung allerdings nicht mehr auf 32 Bit Systemen. AnyCPU wäre daher besser geeignet.

    Zudem gibt es dann noch das Problemchen, dass andere 32 Bit Anwendungen dann wieder auf Wow6432Node zugreifen und deine Einstellung dort dann ggfs. nicht verfügbar ist. Je nachdem, was Du da eigentlich machen willst, wäre es daher notwendig, dass Du in beide Nodes schreibst.

    BTW: Deine Sig ist doch etwas zu lang, zudem ist hier keine Projektbörse, in der die Informationen interessant wären.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Sonntag, 24. Juli 2011 14:41
    Moderator