Script für Vista und Win7

  • Hallo liebe Gemeinde,
    bin neu hier im Forum und habe von Autoit so gut wie keine Ahnung. Ist aber ein prima Tool und ich wünschte, ich hätte es 2003

    schon gehabt. Dank an die Entwickler! Bei meiner Ausbildung als PC-Techniker damals hatten wir u.a. 1 Monat Javascript und

    VBA, konnte mich seinerzeit nicht damit anfreunden. Mit Autoit habe ich schon ein paar kleine Erfolge aber hänge jetzt bei einer

    Geschichte fest. Bin dabei ein älteres Programm für Vista und 7 lauffähig zu machen und wollte die Installation automatisieren.

    Dabei müssen auch einige Einträge in die Registry, auch das klappt grundsätzlich schon (Adminrechte). Habe die Beta-Version

    3.3.5.6 Sc1 1.79 - damit läuft einiges schon besser.
    Jetzt zum Punkt wo ich festhänge:

    RegWrite("HKEY_CLASSES_ROOT\CLSID\{59245250-7A2F-11D0-9482-00A0C91110ED}\InprocServer32", "REG_SZ",

    "C:\WINDOWS\system32\MSBIND.DLL")

    RegWrite("HKEY_CLASSES_ROOT\CLSID\{59245250-7A2F-11D0-9482-00A0C91110ED}\InprocServer32", "ThreadingModel",

    "REG_SZ", "Apartment")

    Zeile 1 bringt: ERROR: RegWrite() called with illegal argument 3: "C:\WINDOWS\system32\MSBIND.DLL"

    Zeile 2 wird einwandfrei umgesetzt (einzeln getestet und compiliert) und auch in Registry eingetragen.

    Auch in anderen Fällen bekomme ich den Fehler:

    RegWrite("HKEY_CLASSES_ROOT\CLSID\{59245250-7A2F-11D0-9482-00A0C91110ED}", "REG_SZ", "BindingCollection Object")

    Änderung in:

    RegWrite("HKEY_CLASSES_ROOT\CLSID\{59245250-7A2F-11D0-9482-00A0C91110ED}", "(Standard)", "REG_SZ",

    "BindingCollection Object")

    ... geht, aber dann habe ich 2 Werte, einmal Standard ohne Wert und einmal Standard mit Wert "BindingCollection Object".

    Also sobald REG_SZ hinter dem Schlüssel steht der im Standard-Wert etwas eingetragen bekommen soll - Fehler!

    Hat jemand eine Idee??

    Einmal editiert, zuletzt von AlexX (31. Mai 2010 um 18:28)

  • Ich glaube das die "C:\WINDOWS\system32\MSBIND.DLL" unantastbar ist, sodass sie unveränderbar ist. Guck mal ob die Schreibgeschützt ist oder wieauch immer und nimm das mal raus...

  • [Blockierte Grafik: http://www.autoit.de/wcf/images/smilies/ylsuper.gif] Danke für die schnelle Antwort.

    Wie schon beschrieben, ich habe keine Probleme mit dem Eintrag. Funktioniert einwandfrei. Aber egal, was ich als Schlüssel eintrage, will ich den Wert der Zeichenfolge für den Schlüssel in Standard vom Typ REG_SZ direkt durch das Skript ändern, bekomme ich eine Fehlermeldung von SyntaxCheck. Gebe ich an, in Schlüssel XY soll eine Zeichenfolge mit Namen "(Standard)" und dem Wert "LirumLarum" erstellt werden - kein Problem. Da der Schlüssel aber immer schon eine Zeichenfolge mit Namen Standard hat, brauche ich eine Möglichkeit um nur den Wert von Standard zu ändern. Ansonsten wird ja eine zweite Zeichenfolge Standard eigetragen, die dann allerdings den gewünschten Wert enthält.
    Sieht dann in der Registry so aus:
    (Standard) REG_SZ (Wert nicht gesetzt)
    (Standard) REG_SZ (LirumLarum)

    was ich wollte ist nur
    (Standard) REG_SZ (LirumLarum)

    Jetzt werde ich probieren, ob das eventuell für meine Geschichte hier egal ist. Weil - einmal ist es ja eine Zeichenfolge ohne Wert. Aber besser noch, wenn man wüßte, wie ein vorhandener Wert zu ersetzen wäre.

    Bis bald

  • Problem gelöst

    vor REG_SZ muss die Zeichenfolge stehen, für Standard ist es "", dann der Wert. Und so erscheint in der Registry dann auch wie gewollt. In meinem Fall:

    InprocServer32", "", "REG_SZ", "C:\WINDOWS\system32\MSBIND.DLL"

    wird InprocServer32 angelegt, die bereits mitgegebene Zeichenfolge namens Standard mit "" angesprochen, der Typ mit REG_SZ festgelegt und der Wert C:\WINDOWS\system32\MSBIND.DLL eingetragen.

    Easy wenn man´s weiss.