R for Windows 的“当前版本”和“安装路径”注册表项有何用途?

Jos*_*ien 7 windows registry r

这是我要询问的两个注册表项。**

HKEY_LOCAL_MACHINE\Software\R-core\R\Current Version
HKEY_LOCAL_MACHINE\Software\R-core\R\version\InstallPath
Run Code Online (Sandbox Code Playgroud)

当 R 从命令行(或从emacsstatconnDCOM)启动时,它使用 Windows 环境变量中首先出现的任何版本Path。相比之下,双击*.Rdata文件使用 中相关文件关联条目所指向的版本HKEY_CLASSES_ROOT

但这两个HKEY_LOCAL_MACHINE条目何时或通过什么被使用呢?

编辑: Brian Diggs 指出了一组*.bat确实使用(并修改)这些注册表项的 Windows 文件,但我仍然对接近“核心”R 的任何东西是否使用这些注册表项感兴趣。(我希望答案是“不”。)


** 如R for Windows 常见问题解答中所述,这些条目可以在安装期间(通过单击“在注册表中保存版本号”)或稍后从命令行(通过RSetReg.exe在其中键入$RHOME\bin)进行设置。

Jos*_*ien 5

主要编辑:

看起来这些注册表项主要供外部应用程序使用。

这就是我这么认为的原因。

  1. HKEY_LOCAL_MACHINE在 R 源中进行grep 操作,仅在三个文件中就发现了四个命中结果。文件 -- "extra.c""RSetReg.c""rhome.c"-- 均位于R-2.15.0/src/gnuwin/或其子目录中。

  2. 相关的出现似乎是 in R-2.15.0/src/gnuwin/rhome.c,其中由 C 函数使用get_R_HOME。该功能旨在

    /* 从环境或注册表获取 R_HOME:在嵌入式应用程序中使用 */

    R_HOME仅当尚未在“C 环境空间”或“Windows API 环境空间”中找到时,才会在注册表中进行搜索。

  3. get_R_HOME反过来,仅出现在另外两个文件"R-2.15.0/src/gnuwin/embeddedR.c"和中"R-2.15.0/src/gnuwin/front-ends/rtest.c"。(根据其驻留readme文件, 的作用"R-2.15.0/src/gnuwin/front-ends/"是使“将[...] R DLL 链接到其他应用程序”成为可能。)

  4. R 的 *NIX 起源和对可移植性的强调使得任何接近 R 核心功能的东西似乎不太可能依赖于注册表项。(这个项目显然更具推测性。)

除非我另有所闻,否则这足以让我相信注册表项的唯一目的是为外部应用程序提供指针,特别是那些使用 R 嵌入式实例的应用程序。