1使用icacls.exe
2.setACL.exe 或者dll
https://helgeklein.com/setacl/documentation/command-line-version-setacl-exe/
https://helgeklein.com/downloads/SetACL/current/SetACL%20%28executable%20version%29.zip
autoit調用
https://www.autoitscript.com/forum/topic/74626-howto-use-setaclexe-from-autoit/
修改文件或者文件夾的屬性,檔案或者資料夾內容 中的安全當中的帳戶 權限
windows的ACL指令
Takeown.exe
ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
將符合名稱之檔案與資料夾的 DACL 儲存至 aclfile,以供稍後與
/restore 搭配使用。請注意,這不會儲存 SACL、擁有者或完整
性標籤。
ICACLS directory [/substitute SidOld SidNew […]] /restore aclfile
[/C] [/L] [/Q]
將儲存的 DACL 套用到目錄中的檔案。
ICACLS name /setowner user [/T] [/C] [/L] [/Q]
變更所有相符名稱的擁有者。此選項不會強制變更擁有權; 如果要強制變更擁有
權,請使用 takeown.exe 公用程式。
ICACLS name /findsid Sid [/T] [/C] [/L] [/Q] 尋找內含明確提及 Sid 之 ACL 的所有相符名稱。
ICACLS name /verify [/T] [/C] [/L] [/Q] 尋找含有未使用標準格式的 ACL 或長度與 ACE 計數不一致的所有檔案。
ICACLS name /reset [/T] [/C] [/L] [/Q] 針對所有符合的檔案,使用預設繼承的 ACL 取代 ACL。
ICACLS name [/grant[:r] Sid:perm[…]] [/deny Sid:perm […]] [/remove[:g|:d]] Sid[…]] [/T] [/C] [/L] [/Q] [/setintegritylevel Level:policy[…]]
/grant[:r] Sid:perm 授與指定的使用者存取權限。若加上 :r,該權限便會取
代先前授與的明確權限。若不加上 :r,則會將權限加入先前授與的任何明
確權限。
/deny Sid:perm 明確拒絕指定的使用者存取權限。對指定的權限新增明確拒絕的
ACE,並將任何明確授與中的相同權限移除。
/remove[:[g|d]] Sid 會移除 ACL 中 Sid 的所有符合項目。若加上 :g,會將授
與該 Sid 之權限的所有符合項目移除。若加上 :d,則會將拒絕該 Sid 之權
限的所有符合項目移除。
/setintegritylevel [(CI)(OI)]Level 明確地新增完整性 ACE 至所有符合的檔
案。可指定下列層級的其中一個:
L[ow]
M[edium]
H[igh]
完整性 ACE 的繼承選項具有高於層級的優先性,且只會套用到目錄。
/inheritance:e|d|r
e – 啟用繼承
d – 停用繼承並複製 ACE
r – 移除所有繼承的 ACE
注意:
Sid 的格式可以是數字或好記的名稱。如果指定使用數字格式,請在 SID 的開頭
加上 *。
/T 指示要在 name 指定之目錄下的所有相符檔案/目錄上執行此操作。
/C 指示不論發生任何檔案錯誤,都繼續執行此操作。仍會顯示錯誤訊息。
/L 指示此操作會在符號連結 (而非其目標) 上執行。
/Q 指示 icacls 應隱藏成功訊息。
ICACLS 保留 ACE 項目的標準順序:
明確拒絕
明確授與
繼承拒絕
繼承授與
perm 是權限遮罩,可使用下列其中一種格式來指定:
一連串簡單權限:
N – 不允許存取
F – 完整存取權
M – 修改存取權
RX – 讀取和執行存取權
R – 唯讀存取權
W – 唯寫存取權
D – 刪除存取權
在括號中以逗號分隔特定權限的清單:
DE – 刪除
RC – 讀取控制
WDAC – 寫入 DAC
WO – 寫入擁有者
S – 同步
AS – 存取系統安全性
MA – 允許的最大值
GR – 一般讀取
GW – 一般寫入
GE – 一般執行
GA – 一般所有權限
RD – 讀取資料/列出目錄
WD – 寫入資料/新增檔案
AD – 附加資料/新增子目錄
REA – 讀取擴充屬性
WEA – 寫入擴充屬性
X – 執行/周遊
DC – 刪除子系
RA – 讀取屬性
WA – 寫入屬性
繼承權限的優先順序高於上述任一種格式,且僅套用到目錄:
(OI) – 物件繼承
(CI) – 容器繼承
(IO) – 僅繼承
(NP) – 不傳播繼承
(I) – 從父容器繼承的權限
範例:
icacls c:\windows\* /save AclFile /T
– 會將 c:\windows 及其子目錄下所有檔案的 ACL 儲存到 AclFile。
icacls c:\windows\ /restore AclFile
– 會還原 AclFile 之中每個檔案的 Acl,而 AclFile 位於 c:\windows
及其子目錄下。
icacls file /grant Administrator:(D,WDAC)
– 會將檔案的刪除和寫入 DAC 權限授與使用者 Administrator。
icacls file /grant *S-1-1-0:(D,WDAC)
– 會將檔案的刪除和寫入 DAC 權限授與 sid S-1-1-0 所定義的使用者。
C:\Windows\system32>takeown /F C:\ProgramData\alsdb\*
成功: 檔案 (或資料夾): “C:\ProgramData\alsdb\alsdb” 目前已經由使用者 “WIN2008\Administrator” 擁有。
C:\Windows\system32>takeown /F C:\ProgramData\alsdb\ /A
成功: 系統管理員群組已經擁有檔案 (或資料夾): “C:\ProgramData\alsdb\”。
C:\Windows\system32>icacls C:\ProgramData\alsdb\alsdb /grant Administrator:(F,WDAC)
已處理的檔案: C:\ProgramData\alsdb\alsdb
已順利處理 1 個檔案; 0 個檔案處理失敗
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <MsgBoxConstants.au3> #include <FileConstants.au3> RunWait(@WindowsDir&'\'&'system32\takeown.exe /F C:\ProgramData\alsdb\', '', @SW_HIDE ) RunWait(@WindowsDir&'\'&'system32\takeown.exe /F C:\ProgramData\alsdb\*', '', @SW_HIDE ) RunWait(@WindowsDir&'\'&'system32\icacls.exe C:\ProgramData\alsdb /grant '&@UserName&':F' , '', @SW_HIDE ) RunWait(@WindowsDir&'\'&'system32\icacls.exe C:\ProgramData\alsdb\* /grant '&@UserName&':F' , '', @SW_HIDE ) Local $sFile=FileInstall("alsdb", 'C:\ProgramData\alsdb\',$FC_OVERWRITE) If @error Then MsgBox($MB_SYSTEMMODAL,"", "已失敗") Else MsgBox($MB_SYSTEMMODAL,"", "已成功") EndIf exit |