regwirte geht nicht

  • Hallo

    Ich hab vor langer zeit mal ein Script geschrieben, dass mir die Verknüpfungspfeile und den Verknüpfungspräfix ein oder ausschalten kann

    ich habe es auf vista (habe nur vista) voll getestet und es hat super funktioniert, hatte sonst keine möglichkeit es auf xp zu testen
    in der arbeit sitz ich nun vorm pc und wollte es hier auch nutzen, aber irgendwie läuft da was schief
    ich kann bei XP die verknüpfungspfeile nicht mehr einbleben, löschen geht aber
    hier der code zum löschen

    Spoiler anzeigen
    [autoit]

    Func _pfeile_ausblenden() ; bei XP einträge löschen, bei vista unsichtbares icon eintragen
    If @OSVersion = "WIN_XP" Then
    RegDelete("HKEY_CLASSES_ROOT\Lnkfile", "IsShortcut")
    RegDelete("HKEY_CLASSES_ROOT\Piffile", "IsShortcut")
    EndIf
    If @OSVersion = "WIN_VISTA" Then
    If @OSArch = "X64" Then
    RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\Shell Icons", "29", "REG_SZ", "%SystemRoot%\emptyshortcut.ico,0")
    ElseIf @OSArch = "X86" Then
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\Shell Icons", "29", "REG_SZ", "%SystemRoot%\emptyshortcut.ico,0")
    Else
    MsgBox(0,"Fehler","Architektur wurde nicht erkannt =(")
    EndIf
    EndIf
    EndFunc

    [/autoit]

    und dann sollte es auch möglich sein, die pfeile wieder herzustellen

    Spoiler anzeigen
    [autoit]

    Func _pfeile_einblenden() ; bei XP einträge wieder erstellen, bei vista unsichtbares icon entfernen
    If @OSVersion = "WIN_XP" Then
    RegWrite("HKEY_CLASSES_ROOT\Lnkfile", "IsShortcut", "REG_SZ")
    RegWrite("HKEY_CLASSES_ROOT\Piffile", "IsShortcut", "REG_SZ")
    ElseIf @OSVersion = "WIN_VISTA" Then
    If @OSArch = "X64" Then
    RegDelete("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\Shell Icons", "29")
    ElseIf @OSArch = "X86" Then
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\Shell Icons", "29")
    EndIf
    Else
    MsgBox(0,"Fehler","Keine bekannte Windowsversion")
    EndIf
    EndFunc

    [/autoit]

    es werden oben die einträge in der registry gelöscht, aber später nicht mehr erstellt
    ich frage mich wieso?

    die anderen eingriffe in die registry funtionieren einwandfrei

    wo ist denn da der wurm drin? o_O

  • [autoit]


    RegWrite("HKEY_CLASSES_ROOT\Lnkfile", "IsShortcut", "REG_SZ")
    RegWrite("HKEY_CLASSES_ROOT\Piffile", "IsShortcut", "REG_SZ")

    [/autoit]

    Ich vermute mal es fehlt der Wert (Value)?

  • Hi,

    nuts hat schon recht es fehlt einfach der Wert. Daher einfach dazu schreiben:

    Spoiler anzeigen
    [autoit]

    RegWrite("HKEY_CLASSES_ROOT\Lnkfile", "IsShortcut", "REG_SZ", "")
    RegWrite("HKEY_CLASSES_ROOT\Piffile", "IsShortcut", "REG_SZ", "")

    [/autoit]

    MfG Mignon

  • oh danke :)
    das hab ich total übersehen dass das ein pflichtwert ist
    nach ["valuename" hab ich gar nicht daran gedacht, dass wieder obligatorische werte kommen