Berechtigung geben und datei durch angepasste Datei ersetzen

  • Hallo Zusammen!

    Ich habe folgenes Problem bei Windows 7 Ich möchte im System32 Ordner die datei Winload.exe ersetzen durch meine, Ich Arbeite mit dem WAIK Tool um windows anzupassen um zu testen alles Benutze ich Virtualbox.

    hier das skript denn ich versucht habe aber doch nicht geklappt hat da ich trotz ausführung keine berechtigung habe die datei zu ändern.

    [autoit]

    #RequireAdmin

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

    ShellExecuteWait("takeown.exe", '/F "C:\Windows\System32\winload.exe" /A /R /D') ;auch nicht wenn nur /A steht.
    ShellExecuteWait("Icacls.exe", '"C:\Windows\System32\winload.exe" /grant administratoren:F')

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

    FileMove('C:\Windows\System32\winload.exe','C:\Windows\System32\winload.OLD',8) ; auch wenn 1 steht geht nicht.

    [/autoit]

    es bleibt beim ausführen unverändert


    Bitte um Hilfe

    Gruß Baron

  • hey, ich kann dir sagen wo das problem ist
    und wie man es per hand löst ;)

    kein benutzer acc. unter win7 hat zugriff auf die dateien
    dass liegt daran, dass der user "TrustedInstaller" der Besitzer aller system dateien ist
    während du (als admin) nur das recht zum ausführen der dateien hast

    wenn man auf eine datei...
    rechtsklick "eigenschaften" --> tab "sicherheit" --> button "erweitert" --> tab "Besitzer" --> button "Bearbeiten"
    machst, da kannst du dann die Administratorgruppe als Besitzer eintragen (oder dein Benutzeracc.) und du kannst die Datei bearbeiten
    (ggf. unter tab "Berechtigungen" dir noch Vollzugriff geben, falls dies nicht automatisch geschieht)

    wie man den Besitzer aber automatisiert ändern kann weiß ich nicht sry :D

  • Also ich habe eine Batch datei wenn man die in der Registry einbindet kann man auf der datei in meinem Beispiel Winload.exe Rechtsklick Kontextmenu auf Take Ownership Drücken und dann kann man die Datei Winload.exe in Winload.old ändern.

    hier mal der Batch inhalt

    nun habe ich mir es so gedacht das ganze als Skript zubasteln so das es auch gleichzeitig auf das Kontextmenü auf Take Ownership drückt.

    das nächste Problem wenn ich denn inhalt der Batch in das Skript einbaue und es ausführe dann kommt die Meldung "öffne mit" kann es vielleicht an die 64bit version Liegen.?

    das 2 Problem ich würde gern es so machen per Skript das es von selber im kontextmenü Take Ownership auf die datei ausführen tun.


    Bitte um Hilfe vielleicht hat einer ja eine idee wie man es beweltigen kann.

    Gruß baron

  • habe bemerkt das es bei der EXE Dateien nicht geht aber bei die DLL Dateien auch da möchte ich die "imageres.dll" ändern das ist die Datei wo der Startsound von Windows und Das Willkommen Background BMP drin ist.

    Habe was zusammen gebastelt der Obere Teil Funktioniert nun doch der Untere Teil klappt nicht.

    [autoit]

    #RequireAdmin

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

    RegWrite("HKCR\*\shell\runas", "", "REG_SZ", "Take Ownership")
    RegWrite("HKCR\*\shell\runas", "NoWorkingDirectory", "REG_SZ", "")
    RegWrite("HKCR\*\shell\runas\command", "", "REG_SZ", 'cmd.exe /c takeown /f "%1" && icacls "%1" /grant administratoren:F')
    RegWrite("HKCR\*\shell\runas\command", "IsolatedCommand", "REG_SZ", 'cmd.exe /c takeown /f "%1" && icacls "%1" /grant administratoren:F')

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

    RegWrite("HKCR\Directory\shell\runas", "", "REG_SZ", "Take Ownership")
    RegWrite("HKCR\Directory\shell\runas", "NoWorkingDirectory", "REG_SZ", "")
    RegWrite("HKCR\Directory\shell\runas\command", "", "REG_SZ", 'cmd.exe /c takeown /f "%1" /r /d y && icacls "%1" /grant administratoren:F /t')
    RegWrite("HKCR\Directory\shell\runas\command", "IsolatedCommand", "REG_SZ", 'cmd.exe /c takeown /f "%1" /r /d y && icacls "%1" /grant administratoren:F /t')

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

    ; Der Obere Teil geht bloß kommt beim ausführen am Ende die Meldung das es Nicht Richtig Ausgeführt würde aber es geht

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

    ; Der Unterteil geht nicht so wie geplannt mit der DLL datei.

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

    $sProgramname = "imageres.dll"
    $sKontext = "Take Ownership"

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

    $oShell = ObjCreate("Shell.Application")
    $oFolder = $oShell.NameSpace(@WindowsDir & '\System32')
    $oItem = $oFolder.ParseName($sProgramname)
    $oVerbs = $oItem.Verbs
    For $verb In $oVerbs
    $verbname = StringReplace($verb.name, "&", "")

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

    If $verbname = $sKontext Then $verb.DoIt
    Next

    [/autoit]

    Der Untere teil soll auf "Take Ownership" aus dem Kontextmenu wo es steht ausführen.

    Bitte um Hilfe

    Gruß Baron