有沒有辦法在 Windows 7 命令提示字元中從命令列顯示資料夾和檔案的擁有者?
您可以將資料夾或檔案的擁有者變更為某個不是您自己的使用者名稱的「任意」使用者嗎?
我有一些資料夾(和文件)大概我刪除的應用程式留下的。如果我嘗試查看資料夾的內容,我會被告知我沒有這樣做的權限,即使我以「管理員」身份運行。
我可以「取得資料夾(檔案)的所有權」(我認為這會成功,但尚未嘗試過),但如果我需要將所有權恢復給以前的所有者,我需要知道原始所有者的用戶名所有者,我需要能夠「授予所有權」給該使用者。
是否可以從 Windows 命令提示字元(或如果不能,則從 GUI 工具)執行此操作?
答案1
您可以透過命令列取得所有權帶走命令並通過 Windows GUI。
您可以使用以下命令查看文件/資料夾的擁有者目錄帶 /q 參數
您可以透過 Windows GUI 查看(並取得)所有權,方法是右鍵單擊 Windows 資源管理器中的物件(檔案或資料夾),然後選擇特性然後導航到安全標籤。上安全選項卡,按一下先進的按鈕和隨後顯示的進階安全設定對話框,導航至擁有者標籤。
一旦您獲得了文件/資料夾的所有權,Windows 就不會追蹤以前的所有者,因此無法還原到以前的所有者。此外,如果您使用的檔案系統類型不支援這些擴充屬性(例如 FAT16、FAT32、exFAT 等),則不存在所有權或檔案權限的概念。
答案2
您可以使用wmic
以下方式查詢所有權資訊:
wmic path Win32_LogicalFileSecuritySetting where Path="C:\\windows\\winsxs" ASSOC /RESULTROLE:Owner /ASSOCCLASS:Win32_LogicalFileOwner /RESULTCLASS:Win32_SID
不要使用,dir
因為所有權資訊可能會被剪裁,就像本範例目錄一樣。
要獲得格式化的輸出,DOMAIN\USER
可以使用以下批次腳本:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
REM Escpe the backslash with \\
SET ESCAPED=%~f1
SET ESCAPED=!ESCAPED:\=\\!
wmic path Win32_LogicalFileSecuritySetting where Path="!ESCAPED!" ASSOC /RESULTROLE:Owner /ASSOCCLASS:Win32_LogicalFileOwner /RESULTCLASS:Win32_SID > "%temp%\wmi.tmp"
for /F "skip=2 delims=€" %%G in ('type %temp%\wmi.tmp') do (call :process_wmioutput "%%G")
goto :continue
:process_wmioutput
SET UNDELIMITED=%1
SET DELIMITED=!UNDELIMITED: =€!
FOR /F "delims=€ tokens=10,12" %%G in ("!DELIMITED!") DO (ECHO %%H\%%G)
exit /B
:continue
答案3
答案4
如果僅DIR
在 Microsoft 世界中使用,請嘗試該/Q
選項。
例如:
DIR *.xlsx /Q