Registry ändern

  • Hallo,

    ich versuche per AutoIt Einträge in der Registry zu ändern.
    Ich habe dazu ein ein weiteres Script Namens RunAs.exe geschrieben um
    das eigentliche Programm mit Admin Rechten laufen zu lassen.

    So mein Tool zum Ändern der Reg läuft nun mit Admin Rechten und soll nun im Bereich
    HKEY_CURRENT_USER des Standard Benutzers (dieser ist auch angemeldet) einen Wert ändern.

    Blöderweise wird der Wert nicht beim Standard Benutzer geändert sondern beim Admin.

    Hier mal meine Zeile Code die es eigentlich ändern soll :

    RegWrite("\\" & $IP & "\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device", "REG_SZ", $TempString)

    Vielleicht hat ja jemand eine Idee.

    Gruß

    Warum passieren mir immer Sachen, die sonst nur dämlichen Menschen passieren?

  • Für HKEY_CURRENT_USER brauchst du keine Adminrechte. Sprich lass deine RunAs.exe weg und es geht.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Mh.., ohne meine RunAs bekomme ich folgende Fehlermeldung:

    Line 6636 (File "C:\Drucker.exe"):
    Error: Variable must be Type "Object".

    Ich dachte diese käme aufgrund mangelnder Berechtigungen, da sie mit dem RunAs nicht auftritt.


    GRuß

    Warum passieren mir immer Sachen, die sonst nur dämlichen Menschen passieren?

  • Das kommt weil du es remote Versuchst. Sprich das was du machen willst schließt sich Gegenseitig aus. Da musst du schon über die SID gehen welche zu unter HKEY_USERS findest.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (25. April 2013 um 11:07)

  • Hallo,

    könntest du mir das genauer erklären, jetzt komme ich nicht mehr mit.

    Gruß

    Warum passieren mir immer Sachen, die sonst nur dämlichen Menschen passieren?

  • Unter HKEY_USERS werden alle HKEY_CURRENT_USER der Benutzer die sich jemals an dem Rechner angemeldet haben gespeichert und zwar mit einer eindeutigen sogenannten SID die sieht z.b. so aus S-1-5-21-1708537768-2000478354-839522115-27457 um nun rauszufinden welche Userid ein bestimmter User hat kannst du unter HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList nachschauen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Super Danke, aber ich denke auf jeder Workstation werden sich diese IDs unterscheiden auch wenn der User den gleichen Namen hat oder?

    Warum passieren mir immer Sachen, die sonst nur dämlichen Menschen passieren?

  • Hallo,

    ja das ginge auch.
    Es ist aber ein Tool mit dem der Support Standard Drucker umstellt im laufenden Betrieb,
    das war bis jetzt der einzige Ansatz den ich gefunden habe.

    Ich lese die Drucker aus und der User kann aus einer Liste einen neuen Standard Drucker wählen,
    diesen setzte ich dann in der Reg. Die fehlen Daten entehme ich hier: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts

    Wie gesagt als Admin alles kein Problem.

    Gruß

    Warum passieren mir immer Sachen, die sonst nur dämlichen Menschen passieren?

  • da kann der user doch aber den drucker, über das tool, selbst setzen! euer support hat doch bestimmt wichtigere sachen zu tun :)
    machst du eine schöne gui und alles läuft!

    das wäre ja der pfad in der registry (als Beispiel PDFCreator)

    [autoit]


    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\"Device"="PDFCreator,winspool,Ne00:"

    [/autoit]

    hier wäre mal ein kleiner ablauf ...

    1. gui mit dropdownmenü erstellen
    2. vorhandene drucker in der registry auslesen (HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices oder Printer Ports)
    3. wert zum setzen in die registry anpassen und ausführen ..

    gruß gmmg

    2 Mal editiert, zuletzt von gmmg (26. April 2013 um 15:20)

  • Wenn dir das vielleicht hilft, hier ein Script um die SID des aktiven Anwenders auszulesen:
    (Script nicht von mir evtl. AspirinJunkie)

    [autoit]

    $sUser = _Reg_GetSID()
    If $sUser Then MsgBox(0, "Benutzer-SID", $sUser)

    [/autoit][autoit][/autoit][autoit]

    Func _Reg_GetSID()
    Local $sKey = "HKU\", $sEntry, $iReg = 1, $sRegEx = "(?i)s-1-5-21-([\d|-]*)"
    While 1
    $sEntry = RegEnumKey($sKey, $iReg)
    If @Error Then ExitLoop
    $iReg += 1
    If NOT StringRegExp($sEntry, $sRegEx) Then ContinueLoop
    Local $aRegExp = StringRegExp($sEntry, $sRegEx, 1)
    Return 'S-1-5-21-'&$aRegExp[0]
    Wend
    Return False
    EndFunc;==> _Reg_GetSID()

    [/autoit]
  • Hallo,

    ich habe eine GUI die genau das soll, über die Reg den Standarddrucker setzten.
    Ich lese bereits die installierten Drucker aus und zeige dieser in der GUI an.
    Mein Problem ist das das Tool per RunAs als Admin ausgeführt wird und daher
    immer der Wert des Admin in Reg geändert wird.

    Danke Fintan, ich werde den Code direkt mal Testen. Ich denke das könnte die Lösung sein.


    Gruß Thomas

    Warum passieren mir immer Sachen, die sonst nur dämlichen Menschen passieren?

  • Hallo,

    wollte den Code nun mal testen, lokal ja auch kein Problem.
    Da ich aber den Code nicht zu 100% verstehe, habe ich noch Fragen dazu.
    Wie kann ich den Code auf einer anderen Maschine ausführen.

    Wenn ich nen Reg Eintag auslesen will ist es ja recht einfach,

    [autoit]

    RegRead("\\" & $IP & "\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device")

    [/autoit]

    .

    Geht es dabei evtl. ähnlich ?

    Gruß Thomas

    Warum passieren mir immer Sachen, die sonst nur dämlichen Menschen passieren?