Windows 10 上的 RStudio - 保存任何类型的文件时,我都会收到“文件未找到”的信息。\documents\ + 子文件夹中的程序权限问题

Windows 10 上的 RStudio - 保存任何类型的文件时,我都会收到“文件未找到”的信息。\documents\ + 子文件夹中的程序权限问题

我遇到了一个奇怪的问题,RStudio 无法再保存到除父<user>文件夹之外的任何文件夹(不包括其任何子目录,例如documentsdocument/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 个例外(打开“开始”按钮并搜索允许的应用程序或通过受控文件夹访问允许应用程序):

  1. rstudio.exe,位于 C:\program files\Rstudio\bin
  2. R.exe,C:\program files\R\R-3.6.0\bin
  3. 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

相关内容