0

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

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

我想要一种方法来检测路径变量的更改,而无需再次尝试安装。

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

Environment.SetEnvironmentVariable("path", ancientPath + ";" + tmp, EnvironmentVariableTarget.Machine);
4

2 回答 2

0

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

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

于 2013-05-09T13:53:29.497 回答
0

您正在尝试做的事情显然是不可行的。一个进程可以修改它自己的环境,它可以产生具有不同环境的进程,但没有进程可以改变另一个进程的环境。当您在第一次安装后启动新进程时,您应该会看到更新后的路径。

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

于 2013-05-08T14:40:55.057 回答