【问题标题】:how to get get-env refresh in rebol?如何在 rebol 中获得 get-env 刷新?
【发布时间】:2010-06-13 10:12:42
【问题描述】:

如果我更改注册表中的 hkey_current_user/environment/path,get-env "PATH" 不会反映新值,除非我关闭 rebol 控制台并重新打开它。

【问题讨论】:

    标签: environment-variables registry rebol


    【解决方案1】:

    Environment variables 与 Registry Keys 不同。

    Windows 在设置程序从 shell 启动时获得的默认环境时,确实会参考特定的注册表项。但是,更改它不会将这些值注入到已经运行的进程的环境中(在 Rebol 或任何其他程序中)。相反,如果您在正在运行的程序的环境中进行设置,您将不会看到这些更改反映回注册表。

    如果你想读取注册表值,有一个 API:

    http://www.rebol.com/docs/sdk/registry.html

    BUT 对或错:普遍接受(在我使用过的每个平台上)必须退出程序并重新启动它才能从系统设置中刷新环境变量。如果您尝试解决这个问题,您可能会导致比其他任何事情都更加复杂和混乱。

    【讨论】:

    • 我尝试使用 dos set path,你说得对,它不会刷新 :( 但 rebol 不能比 MS 更智能,并且真正直接从注册表中读取;)
    • SDK 很棒,但这是一种基本需求,应该在标准 rebol 版本中。
    • 我确信与环境变量和注册表的交互比其他应用程序“更好”并不是一个优先事项。就 Rebolers 想要重新想象如何解决这些问题的程度而言,他们会在键/值数据库作为 Rebol 对象本地存储的系统中这样做......用于操作它们的代码 Rebol 等。
    • 如果你使用 CALL 去壳到另一个 REBOL 实例,在那里执行 get-env 并捕获返回值呢?
    • 目前未运行 Windows,但如果 CALL 在后台使用 CreateProcess,则该衍生进程的唯一选择是继承父进程的环境或传入自定义块。我不认为有“获得一个新的用户启动进程将开始的环境”。可能有一个神秘的仅限 Windows 的 API 可以实现这一点,Rebol 可能会在某处使用它,但我(再次)要警惕这种“魔法”,而且它肯定不是跨平台的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多