命令行永久获取文件夹访问权限

更新 尽管我能够使用接受答案中描述的方法一次,但第二次失败或者只是带来了太多麻烦。

进一步搜索后,我发现了Helge Klein的SetACL,它要好得多,并且正好满足所需。


我无法访问某些文件夹,例如 c:\ Program Files \ WindowsApps 。通过命令行,我会收到一个“拒绝访问”的错误提示,而通过Windows资源管理器,我会弹出一个对话框,显示“您当前没有权限访问此文件夹”。

enter image description here

点击“继续”可以让我获得访问权限,但我希望能够通过命令行来授予自己访问权限,以便我的脚本不会在相同的安全环境下出现此问题。 我在Microsoft Technet上找到了这个问题(this),但是我无法使其正常运行。请注意,我已经以管理员身份运行了PowerShell。
PS C:\WINDOWS\system32> icacls "C:\Program Files\WindowsApps" /grant i063510:F /inheritance:e
C:\Program Files\WindowsApps: Access is denied.
Successfully processed 0 files; Failed processing 1 files
PS C:\WINDOWS\system32> icacls "C:\Program Files" /grant i063510:F /inheritance:e
C:\Program Files: Access is denied.
Successfully processed 0 files; Failed processing 1 files
如果有关系的话,我正在使用从Windows 8.1升级而来的Windows 10操作系统。
1个回答

您目前没有访问此文件夹的权限 请尝试使用以下语法对具有相应用户名的文件夹执行ICACLS和/或TAKEOWN命令。 首先尝试只运行ICACLS命令,如果问题未解决,再运行TAKEOWN命令,然后再次运行ICACLS命令

ICACLS 命令

将以下文本翻译成中文:
  • 将此文件夹的所有子文件夹和文件授予明确的完全控制访问权限,保留所有继承的权限并在错误时继续执行

    ICACLS "<FolderPath>" /INHERITANCE:e /GRANT:r <UserName>:(F) /T /C
    
  • 将此文件夹的所有子文件夹和文件授予明确的修改访问权限,保留所有继承的权限并在错误时继续执行

    ICACLS "<FolderPath>" /INHERITANCE:e /GRANT:r "<UserName>":(M) /T /C
    
  • 更改此文件夹及其所有子文件夹和文件的所有者,并在错误时继续执行

    ICACLS "<FolderPath>" /SETOWNER "<UserName>" /T /C
    

TAKEOWN 命令

以您想要授予所有权的帐户运行此命令,它将更改为文件夹及其所有子文件夹和文件的所有者。 TAKEOWN /F "" /R /D Y

谢谢。我想避免使用 TAKEOWN / SETOWNER 命令。我假设它会改变文件的所有者,而 Windows Explorer 只分配权限。 - Miserable Variable
你能确认一下只有ICACLS "<FolderPath>" /INHERITANCE:e /GRANT:r "<UserName>":(OI)(CI)(X,M,F) /T /C这个命令是否会给出预期的结果?如果是的话,我会补充更多细节在我的回答中。 - Vomit IT - Chunky Mess Style
如果你想要对那个特定的文件夹拥有权限,你必须将其所有权转移到自己名下。而对于其他文件夹,你可以避免获取所有权。 - Ramhound
这对我有用:ICACLS "C:\Program Files\WindowsApps" /INHERITANCE:e /GRANT:r i063510:F /T /C。谢谢你的帮助。@Ramhound,我无法从你的评论中理解何时需要或不需要获取所有权。 - Miserable Variable
@MiserableVariable 我刚刚更新了我的回答,并提供了更详细的内容。 - Vomit IT - Chunky Mess Style

  • 相关问题