Rechte mit SetACL.exe setzen?

  • Hallo Leute,

    ich habe versucht mit SetACL.exe die Rechte im Ordner C:\Program Files (x86)\Altec\ den Benutzer die Rechte fürs Ändern zu setzen.
    Leider hat es nicht funktioniert. Was muss ich bitte ändern?

    [autoit]

    ;Prüfen ob die SETAcl vorhanden ist
    $setacl = "D:\Tools\SetACL.exe"
    $ProgDir="C:\Program Files (x86)\Altec\"
    If FileExists($setacl) Then

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

    ;Rechte setzen
    RunWait($setacl & ' -on "' & $pfad & '" -ot file ' & _
    '-actn setprot -op "dacl:p_nc;sacl:nc" ' & _
    '-actn setowner -ownr "n:Administrators" ' & _
    '-actn ace -ace "n:Benutzer;p:full"' _
    , "", @SW_HIDE)
    Else
    Msgbox(16,"ACHTUNG","Es
    existiert keine Setacl.exe auf D:\Tools." &
    @CRLF & "Bitte diese dort hinein kopieren")
    Exit
    EndIf

    [/autoit]

    Viele Grüße,
    Dino

    Einmal editiert, zuletzt von Dino (14. Mai 2012 um 19:45)

  • Ich denke mal dein Script hat nicht die nötigen Rechte dazu. Versuchs mal so:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    ;Prüfen ob die SETAcl vorhanden ist
    $setacl = "D:\Tools\SetACL.exe"
    $ProgDir="C:\Program Files (x86)\Altec\"
    If FileExists($setacl) Then

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

    ;Rechte setzen
    RunWait($setacl & ' -on "' & $pfad & '" -ot file ' & _
    '-actn setprot -op "dacl:p_nc;sacl:nc" ' & _
    '-actn setowner -ownr "n:Administrators" ' & _
    '-actn ace -ace "n:Benutzer;p:full"' _
    , "", @SW_HIDE)
    Else
    Msgbox(16,"ACHTUNG","Es
    existiert keine Setacl.exe auf D:\Tools." &
    @CRLF & "Bitte diese dort hinein kopieren")
    Exit
    EndIf

    [/autoit]
  • Das hilft auch nicht, die Rechte werden nicht gesetzt.

    Ich habe es so ohne Erfolg probiert:

    [autoit]

    #RequireAdmin
    ;Prüfen ob die SETAcl vorhanden ist
    $setacl = "D:\Tools\SetACL.exe"
    $ProgDir="C:\Program Files (x86)\Altec\"
    If FileExists($setacl) Then

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

    ;Rechte setzen
    RunWait($setacl & ' -on "' & $pfad & '" -ot file ' & _
    '-actn ace -ace "n:Benutzer;p:full"' _
    , "", @SW_HIDE)
    Else
    Msgbox(16,"ACHTUNG","Es existiert keine Setacl.exe auf D:\Tools." &
    @CRLF & "Bitte diese dort hinein kopieren")
    Exit
    EndIf

    [/autoit]
  • stimmen deine Parameter eigentlich?

    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.

  • Warum benutzt Du nicht einfach anstelle von SetACL das ICACLS?
    Das ist bei neueren Betriebssystemen automatisch mit dabei.
    Dann kannst Du folgende Syntax verwenden:

    [autoit]


    $szPath = "C:\Program Files (x86)\Altec"
    ;Setze Rechte für Benutzer auf Änderungszugriff
    ;Mit Objektvererbung und Containervererbung
    Run('"' & @ComSpec & '" /c ICACLS "' & $szPath & '" /grant Benutzer:(OI)(CI)M /T /C /Q', '', @SW_HIDE)

    [/autoit]

    Gruss Veronesi

    Einmal editiert, zuletzt von veronesi (14. Mai 2012 um 12:40)