![Windows 10 上的 RStudio - 保存任何类型的文件时,我都会收到“文件未找到”的信息。\documents\ + 子文件夹中的程序权限问题](https://linux22.com/image/1589879/Windows%2010%20%E4%B8%8A%E7%9A%84%20RStudio%20-%20%E4%BF%9D%E5%AD%98%E4%BB%BB%E4%BD%95%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%96%87%E4%BB%B6%E6%97%B6%EF%BC%8C%E6%88%91%E9%83%BD%E4%BC%9A%E6%94%B6%E5%88%B0%E2%80%9C%E6%96%87%E4%BB%B6%E6%9C%AA%E6%89%BE%E5%88%B0%E2%80%9D%E7%9A%84%E4%BF%A1%E6%81%AF%E3%80%82%5Cdocuments%5C%20%2B%20%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E7%A8%8B%E5%BA%8F%E6%9D%83%E9%99%90%E9%97%AE%E9%A2%98.png)
我遇到了一个奇怪的问题,RStudio 无法再保存到除父<user>
文件夹之外的任何文件夹(不包括其任何子目录,例如documents
或document/R
- 程序正常运行所必需的)。
我收到“未找到文件”错误。
以下是我所知道并尝试过的:
- 在问题出现之前我没有对 RStudio 做任何事情。
- 我尝试更新到最新版本 - 1.2.1335
- 我尝试卸载并重新安装最新版本。仍然有这个问题
- 权限方面 - 我拥有完全控制权 - 作为用户和管理员的所有权限,并且我尝试在以用户和管理员身份运行时保存各种类型的文件。
- 的父文件夹
\documents\
,即主<user>
文件夹是唯一可以工作的文件夹,并且我拥有完整权限。C:\
由于我没有权限(作为<user>
),因此无法工作。
我还以管理员身份在 PowerShell 中尝试了以下操作:
attrib -r +s C:\Users\<user>\Documents\ /s /d
- “文件未找到”attrib -r +s C:\Users\Ehrlichstein\Documents\R /s /d
“拒绝访问”(也适用于所有子文件夹)
我寻找解决方案这里并在 Windows 10 官方讨论中以及在 RStudio 支持中都找不到有效的答案。
我运行的是 Windows 版本 10.0.17134 Build 17134 和 R Studio 版本 1.2.1335
任何帮助,将不胜感激。
编辑
R 会话信息:
R version 3.5.2 (2018-12-20)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17134)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets
[6] methods base
loaded via a namespace (and not attached):
[1] compiler_3.5.2 htmltools_0.3.6 tools_3.5.2
[4] yaml_2.2.0 Rcpp_1.0.0 rmarkdown_1.11
[7] knitr_1.21 xfun_0.4 digest_0.6.18
[10] evaluate_0.13
答案1
最后通过受控文件夹访问解决了这个问题,它阻止了 r 和 Rstudio。我通过“允许的应用程序”设置添加了 3 个例外(打开“开始”按钮并搜索允许的应用程序或通过受控文件夹访问允许应用程序):
- rstudio.exe,位于 C:\program files\Rstudio\bin
- R.exe,C:\program files\R\R-3.6.0\bin
- rsession.exe,位于 C:\program files\Rstudio\bin
答案2
这显然是权限问题。当我遇到类似问题时,我通常会授予所有人访问权限,然后删除用户/组,看看问题再次出在哪里。不过,授予所有人访问权限可能有点过分,特别是如果你不熟悉的话。这里有两个选项,第一个比较轻,第二个比较重。
首先,从提升的 CMD 提示符运行以下命令:
icacls "C:\Users\Ehrlichstein\Documents" /grant Ehrlichstein:(OI)(CI)F /T
(若不同,请替换您的实际用户名)
第二种,更严格的方法是授予每个人访问权限:
icacls "C:\Users\Ehrlichstein\Documents" /grant Everyone:(OI)(CI)F /T
如果您使用第二个命令,您可能需要在确保一切正常运行后返回并限制访问,这取决于您的环境。
使用的 icacls 命令:
- F = 完全控制
- CI = 容器继承 - 此标志表示下级容器将继承此 ACE
- OI = 对象继承 - 此标志表示下属文件将继承 ACE
- /T = 递归应用于现有文件和子文件夹(OI 和 CI 仅适用于新文件和子文件夹)
(完整的 icacls 文档在这里:https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/icacls)