Hallo Zusammen,
ich habe mir ein AutoIt-Script geschrieben welches einen Pfad als Argument übergeben bekommt und diesen in der Registry ergänzen soll, so dieser noch nicht dort eingetragen ist.
Der Registry-Key ist "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion"
Der Wert welcher ergänzt werden soll ist "DevicePath"
Windows sucht in den hier eingetragenen Verzeichnissen nach Treibern.
Mein Script ließt aus der Registry, prüft ob der Pfad bereits eingetragen ist und ergänzt diesen, falls er nicht eingetragen ist.
Aufgefallen ist mir, dass der Pfad unter folgenden Key gelesen und geschrieben wird, sobald es ein 64Bit System ist: HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion
Nun zu meiner Frage: Weshalb wird in meinem Script der Schlüssel gewechselt und wie kann ich das unterbinden?
Leider funktioniert die Treibersuch nicht, sobald der Reg-Key automatisch gewechselt wird.
Dieses Problem konnte ich bei 64 Bit-Systemen beobachten (Win 7 und Win 8.1), bei einem 32 Bit System (Win 10) tritt dieses Problem nicht auf.
Grüße,
Crazy
Anbei noch mein kleines Script:
#include <MsgBoxConstants.au3>
$RegistryKey = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion"
$RegistryValue = "DevicePath"
;Parameter prüfen
If $CmdLine[0] = 1 Then
$strNewPath = $CmdLine[1]
Else
MsgBox($MB_SYSTEMMODAL, "Test", "Wrong count of arguments (!=0).")
Exit 1
EndIf
;Wert aus der Registry lesen
$regValue = RegRead($RegistryKey, $RegistryValue)
;Prüfen ob der einzutragene Pfad bereits in der Registry eingetragen wurde, wenn dem so ist Programm beenden
$strArray = StringSplit($regValue, ";")
For $i=1 To $strArray[0]
MsgBox($MB_SYSTEMMODAL, "Test", "Comparing reg path '" & $strArray[$i] & "'")
If (StringCompare($strArray[$i], $strNewPath) == 0) Then
MsgBox($MB_SYSTEMMODAL, "Test", "Path already usen.")
Exit 2
ElseIf (StringCompare($strArray[$i], """"& $strNewPath & """") == 0) Then
MsgBox($MB_SYSTEMMODAL, "Test", "Path already usen.")
Exit 2
EndIf
Next
;Den Pfad an die vorhandenen Einträge anhängen
$regValue &= ";" & $strNewPath
RegWrite($RegistryKey, $RegistryValue, "REG_EXPAND_SZ", $regValue)
MsgBox($MB_SYSTEMMODAL, "Test", "Path added to driver search.")
[/autoit][autoit][/autoit][autoit]Exit 0
[/autoit]