Gerät aus Gerätemanager entfernen

  • Moin

    Wir verteilen in unserer Firma so ziemlich alles über Columbus (Anwendung zur Verteilung der Software über's Netzwerk). Jedenfalls haben wir da einen HP 7900, der nach der Soundtreiberinstallation immer noch einen Eintrag drin hat, welcher sich einfach durch's deinstallieren, und neu suchen beheben lässt. Nun habe ich ein Script geschrieben welche das erledigt. Das Problem ist: Da der User keine Admin Rechte hat um im Geräte Manager ein Gerät zu deinstallieren, müssen wir das mit dem Admin Account ausführen lassen. Schön und gut, nur wenn der User angemeldet ist, und das mit einem anderen Account ausgeführt wird, wird das in der grafischen Oberfläche vom Admin User ausgeführt. Da der aber ja keine hat, hat es keinen Effekt. Gibt es irgendwie eine Möglichkeit, die Anwendung mit Admin Rechten, aber in der grafischen Oberfläche des User's auszuführen? In AutoIt selbst, oder durch irgendwelche Parameter?

  • vielleicht wäre

    [autoit]

    RunAsSet ( ["user", "domain", "password" [, options]] )

    [/autoit]

    etwas zum ansehen !

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Dann müsste ich dort doch eigtl. das Passwort mitgeben, nicht? Wäre eigtl. ziemlich unsicher.

    Bist du sicher dass der Command richtig ist? Wenn ich draufklicke, findet er es nicht, und auch die AutoIt Hilfe weiss nichts von RunAsSet

  • echt welche autoit version nutzt du denn?

    also meine Hilfe kennt den Befehl:

    Spoiler anzeigen

    RunAsSet
    --------------------------------------------------------------------------------

    Initialisiert Daten eines Benutzerzugangs, der für Run- und RunWait-Operationen verwendet wird. Nur unter 2000/XP oder später ("Ausführen als ...").

    RunAsSet ( ["user", "domain", "password" [, options]] )

    Parameter

    username [optional] Der Benutzername, der verwendet werden soll.
    domain [optional] Die Domäne, die verwendet werden soll.
    password [optional] Das zu verwendende Passwort.
    options [optional] 0 = lade nicht das Benutzerprofil, 1 = (Standard) lade das Benutzerprofil, 2 = verwende nur für Netz-Zugänge

    Rückgabewert

    Erfolg: Gibt 1 zurück, unabhängig vom Erfolg. (Wenn die Login-Information ungültig war, werden darauffolgende Run/RunWait-Befehle scheitern...)
    Fehler: Gibt 0 zurück, falls das Betriebssystem diese Funktion nicht unterstützt.

    Bemerkungen

    Diese Funktion erlaubt, darauffolgende Run- und RunWait-Funktionen unter einem anderen Benutzernamen auszuführen (z.B. als Administrator). Die Funktion ist nur auf Win2000/XP (oder späteren) Systemen anwendbar. NT4-Benutzer sollten die SU-Funktion aus dem NT Resource Kit installieren und benutzen.

    Der Dienst "Ausführen als" ("Secondary Logon service" oder "RunAs service") darf nicht deaktiviert sein, wenn diese Funktion verwenden werden soll.

    Um die RunAs-Angaben wieder ungültig zu machen, ist die Funktion ohne Parameter zu verwenden: RunAsSet().

    Ja unsicher ist das immer, aber wie willst du verhindern, dass er Admin Recht hat ohne das Kennwort anzugeben?

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Gibt es irgendwie Möglichkeiten dass Script zu verschlüsseln? Bzw. ein Passwort für die Dekompilierung zu verlangen?

    Wegen dem Passwort:
    Columbus nutzt, bei der RunAs Angabe, ein File auf dem Server als Passwort, welches irgendwie verschlüsselt ist soviel ich weiss.

  • man kann den Obfuscator zum kompilieren verwenden. Dass "verschleiert" beim kompilieren , aber ich habe keine Erfahrung beim dekompilieren also weiß ich nicht wie sicher das ist.
    Dekompilierungsthreads sind hier im Forum auch nicht besondern gern gesehen.

    Aber den Obfuscator zu verwenden ist sehr einfach im Scite.
    Franz

    Edit: hier steht etwas genauer was der macht: http://de.wikipedia.org/wiki/Obfuscator

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Ich hab auch nicht die Absicht etwas zu dekompilieren zu wollen, es ging mir nur darum, das falls jemand meinen würde das Script dekompilieren zu müssen, ihm die Arbeit zu erschweren.

    Ich werde es mal testweise mit dem Passwort im Script selber probieren. Danke.

  • nein nein das meinte ich ja auch nicht! Ich wollte blos sagen, dass du hier wohl keine Anleitung dazu finden wirst :D

    Aber vielleicht könntest Du ja auch damit etwas basteln:

    [autoit]

    _StringEncrypt ( $i_Encrypt, $s_EncryptText, $s_EncryptPassword [, $i_EncryptLevel ] )

    [/autoit]

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Wie genau soll ich das jetzt anwenden? Zuerst die Variablen für die setzen, und dann mit Domaine, User, Passwort, etc. ausfüllen, dann dieses StringEncrypt benutzen, und am Schluss Runas mit den Variablen machen?

  • war ja nur ein Gedanke !

    Um das Kennwort möglichst nicht im Klartext in den Quelltext schreiben zu müssen würde ich das Kennwort verschlüsseln und dann den verschlüsselten String als Kennwort in den Quelcode setzen... Damit ist es zumindest auf anhieb nicht lesbar... Und dann Vor der Verwendung das Kennwort entschlüssel und dann für Runasset verwenden.

    jaja ich weiß ist nur pseudo Sicher, da man das Encryption- Kennwort im Quelltext hat, aber zumindest das Admin Passwort nicht im Klartext.

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • RunAsSet, habe ich bei mir immer noch nicht. Habe mir auch die Beta geladen, aber die hat keinen eigenen Scite Editor.

    Aus der Hilfe werde ich leider irgendwie nicht schlau. Kann mir da jemand nen Beispiel geben? Also mal angenommen das Passwort ist "Abcd1234".

    [autoit]

    _StringEncrypt(1, $password, "Abcd1234", 1)

    [/autoit]


    richtig so?

    2 Mal editiert, zuletzt von ahatius (1. Dezember 2008 um 15:04)

  • stimmt, das scheint in der deutschen hilfe noch nicht geändert zu sein.

    Sorry !!

    [autoit]

    #include <String.au3>
    $password = "bluba"
    $test = _StringEncrypt(1, $password, "Abcd1234")
    $test2 = _StringEncrypt(0, $test,"Abcd1234")

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

    ConsoleWrite($test2)

    [/autoit]

    hier wird ver und entschlüsselt.

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Hmm, ist dann aber an sich ja wenig sinnvoll, da das Passwort, beim dekompilieren des Scripts so oder so gelesen werden kann. Müsste also das Script selbst mit diesem Obusfactor unlesbar machen, nur find ich dieses Tool für AutoIt irgendwie nicht...

    Ich könnte doch theoretisch, das Passwort zuerst verschlüsseln, dann den Encrypt Part entfernen, und dann einfach den Schlüssel fürs decrypten mit dem Schlüssel zusammen, in meine Anwendung schreiben.

    Einmal editiert, zuletzt von ahatius (1. Dezember 2008 um 15:29)

  • der Obusfactor wäre beim Scite für autoit dabei... dann ctrl + f7..

    Zitat

    Ich könnte doch theoretisch, das Passwort zuerst verschlüsseln, dann den Encrypt Part entfernen, und dann einfach den Schlüssel fürs decrypten mit dem Schlüssel zusammen, in meine Anwendung schreiben.

    genau das meinte ich vorher !! vielleicht unklar. Wobei das auch nur pseudo sicher ist !!

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Also ich hab jetzt 2 Skripts. Das eine decryptet mein Passwort und führt das RunAs auf das 2. Skript aus, welches das mit dem Gerätemanager erledigt. Nun bekomme ich aber eine Fehlermeldung, sobald er das Skript für den Gerätemanager ausführt:

    Zitat

    DVC_MGR.exe - Fehler in Anwendung
    Die Anwendung konnte nicht richtig initialisiert werden (0xc0000142). Klicken Sie auf OK, um die Anwendung zu beenden.

    Was ist passiert?

  • hmmm da wäre der quelltext praktisch..

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Quellcode der Decrypt Anwendung (run_mgr.exe):

    [autoit]

    #include
    $CryptedPassword = _StringEncrypt(0, "zensiert", "LALSKASDKLklsjhfalskjKLJHSDL", 1)
    Runas("User", "Domäne", $CryptedPassword, 4, "C:\DVC_MGR.exe")
    WinWaitClose("Geräte-Manager")

    [/autoit]

    Quellcode der Gerätemanager Anwednung (dvc_mgr.exe):

    [autoit]

    run("rundll32.exe devmgr.dll DeviceManager_Execute")
    winactivate("Geräte-Manager")
    sleep(1000)
    send("{tab}")
    sleep(1000)
    send("Audio-, Video- und Gamecontroller")
    sleep(100)
    send("{right}")
    sleep(100)
    send("SoundMAX Integrated Digital Audio")
    sleep(100)
    send("{delete}")
    sleep(100)
    send("{enter}")

    [/autoit]


    Wenn ich's von Hand ausführe, also die dvc_mgr.exe, dann funktioniert es, so wie es soll.

    Ich bekomme, wie ich grade gesehen habe, wenn ich die run_mgr.exe ausführe, einen Error:

    Einmal editiert, zuletzt von ahatius (1. Dezember 2008 um 16:48)