如何在 Windows 7 上顯示/變更檔案的擁有者

如何在 Windows 7 上顯示/變更檔案的擁有者

有沒有辦法在 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

caclsicalcs可以編輯權限和takeown允許取得所有權。 AFAIK 它們也存在於 Windows 7 中。通常,一旦您執行了takeown,你跟進它cacls或者icalcs授予您自己對該物件的權限。

Microsoft 的安全性模型不允許所有權屬於某人,僅它。這樣,管理員(或其他特權使用者)就無法直接取得其無法存取的文件的所有權、存取或修改該文件,並在不通知原始所有者的情況下將其退還給原始所有者。

編輯:信用去藝術對於使用的描述takeown

答案4

如果僅DIR在 Microsoft 世界中使用,請嘗試該/Q選項。

例如:

DIR *.xlsx /Q

相關內容