我想对路径环境系统变量进行修改,而不需要重新启动或重新启动由于c#的cmd

本文关键字:重新启动 不需要 cmd 修改 路径 环境 系统 变量 | 更新日期: 2023-09-27 18:12:33

我正在使用c# dll,我从Installshield中使用它将Oracle的路径添加到path环境系统变量中,以便能够连接到Oracle数据库,因为即时客户端。

当我第一次运行安装程序时,它没有成功,但对path变量进行了更改。它在第二次尝试时成功,因为路径已经从第一次运行更改了。因此,结论是Oracle数据库提供程序在用代码修改后不会直接查看更改。

我想要一种方法来检测路径变量的变化,而不需要第二次尝试安装。

var ancientPath = Environment.GetEnvironmentVariable("path", EnvironmentVariableTarget.Machine); 
Environment.SetEnvironmentVariable("path", ancientPath + ";" + tmp, EnvironmentVariableTarget.Machine);

我想对路径环境系统变量进行修改,而不需要重新启动或重新启动由于c#的cmd

你想做的显然是不可行的。进程可以修改自己的环境,也可以在不同的环境中产生进程,但是进程不能改变另一个进程的环境。当您在第一次安装后启动一个新进程时,您应该看到更新后的路径。

如果您希望现有进程使用新的环境变量,则必须重新启动它。如果您的安装程序因为缺少路径信息而失败,您将不得不解决这个问题。

尝试向所有窗口发送WM_SETTINGCHANGE消息,如下面的MSDN文章所述。

SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,)(LPARAM)"环境",SMTO_ABORTIFHUNG,5000年,dwReturnValue);