删除程序时,请更正windows7注册表中的文件关联



我有一个windows 7操作系统,并在我的文档文件夹中安装了Rstudio(只需解压缩.zip文件),因为我没有计算机的管理权限。

然后,我通过以下方式手动将文件结尾.Rproj.R.Rmd与rstudio.exe关联:

  • 右键单击以该结尾的文件
  • 选择";使用打开">
  • 点击";浏览">
  • 前往";bin";文件夹,并选择";rstudio.exe">

这很好,当我双击文件时,它们会在RStudio中自动打开。

在接下来的几个月里,我更新了RStudio两次,但没有删除旧版本。然后我注意到文件总是在最旧版本的RStudio(我安装的第一个版本)中打开。我决定清理,并删除了两个旧版本。这时,文件关联消失了(正如预期的那样,因为我刚刚删除了与它们关联的程序)。

为了将它们与最新版本的RStudio相关联,我重复了上面的手动步骤,但遇到了一个障碍:在点击";浏览";按钮,程序没有作为选项出现在主对话框中,我无法将文件与之关联。

我在这里和其他地方寻找了一个解决方案,但无法找到一个完整的步骤来解决我的问题。我确实注意到,这个问题绝非Rstudio独有,我想任何与您删除的程序相关的文件结尾都可能发生(而不是卸载的程序?)。

我怀疑到旧版本Rstudio的路径被卡在注册表的某个地方,但在命令行中尝试assoc .Rproj的各种迭代对我没有帮助:

C:Usersmyusername>assoc .Rproj
File association not found for extension .Rproj
C:Usersmyusername>assoc .Rproj = rstudio
Access is denied.

此外,RStudio在Default Programs列表中不可用(从"开始"菜单访问),受影响的文件结尾也不在"文件关联"下列出。

我最终使用windows regedit找到了解决方案,但由于似乎没有完整的步骤,我在这里发布了它作为答案,以防其他人面临同样的问题。我必须用点击式的方式来完成这项工作,所以如果有人能在命令行界面中提供一个解决方案,或者深入了解我为什么会得到",我将不胜感激;访问被拒绝";消息(即使我尝试使用临时管理员帐户登录时也会发生)。

事实证明我是对的——旧的文件路径仍然与注册表中的文件结尾相关联。我无法从windows命令行提示符访问或编辑它,但使用windowsregedit程序可以工作,如下所示:

  1. 转到开始按钮,键入regedit,然后单击regedit程序图标打开它
  2. 在regedit的左侧菜单上,单击箭头以展开文件夹HKEY_CLASSES_ROOT
  3. 向下滚动列表以查找已解除关联的文件结尾(在我的情况下是.R、.Rproj和.Rmd)
  4. 单击其中一个未关联的文件结尾,查看为其记录的详细信息(这些信息将显示在regedit的右侧面板中)
  5. 查看Data列下文件结尾的内容(在我的情况下,对于.R,它显示为"R_auto_file")
  6. 该值(例如"R_auto_file")是用于指向将用于打开文件的程序的键
  7. 现在,在regedit中进一步向下滚动左侧菜单,经过zs并继续滚动,直到找到一个与刚才识别的键同名的子文件夹
  8. 单击此子文件夹(例如"R_auto_file")旁边的箭头以展开它,并展开其中的子文件夹(shellopen),直到到达command
  9. 单击command以查看右侧面板中的详细信息
  10. 右键单击右侧面板中列Name下的Default图标,然后从显示的菜单中选择Modify…
  11. 在出现的对话框中,在Value data:下,您将看到用于打开文件的程序的可编辑文件路径
  12. 此文件路径可能指向您删除的程序的旧版本
  13. 编辑文件路径,使其指向新程序,然后单击"确定"保存更改
  14. 对所有已解除关联的文件类型重复步骤3-13
  15. 重新启动计算机以使更改生效
  16. 现在,您应该看到这些文件旁边有程序图标,当您双击它们时,它们会以正确的版本打开

我在Windows上使用RStudio时遇到了类似的问题:

在使用安装程序安装RStudio后,我通过可下载的ZIP文件更新到了新版本,并将其安装到了另一个文件夹中。

从那时起,双击.Rproj打开了旧的RStudio,而不是新的,尽管我试图用新的RStudio.exe文件重新分配扩展名

我的解决方案是通过控制台更改此注册表项:

reg add HKEY_USERS<Windows SID>_ClassesApplicationsrstudio.exeshellopencommand /f /ve /d ""C:UsersPublicRStudiobinrstudio.exe" "%1""

请将上面代码段中的替换为您的个人windows用户ID。您可以使用获取SID

whoami /user

SID如下所示:

S-1-8-21-667978445-1323479522-1885766523-895239

BTW:你也可以使用好的旧regedit来更改路径(不需要本地管理员权限!)

最新更新