我正在使用来自Installshield的Oracle动态链接库,将C#的path添加到Path环境变量,以便能够连接到即时客户端的Oracle数据库。
当我第一次运行安装程序时,它没有成功,但对path变量进行了更改。它在第二次尝试时成功,因为路径在第一次运行时已经更改。因此,结论是Oracle数据库提供程序在使用代码修改更改后不会直接查看更改。
我想要一种方法来检测对path变量的更改,而不需要再次尝试安装。
var ancientPath = Environment.GetEnvironmentVariable("path", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("path", ancientPath + ";" + tmp, EnvironmentVariableTarget.Machine);发布于 2013-05-08 22:40:55
你想做的事情显然是不能做的。一个进程可以修改它自己的环境,它可以产生具有不同环境的进程,但任何进程都不能改变另一个进程的环境。当您在第一次安装后启动新进程时,您应该会看到更新后的路径。
如果希望现有进程使用新的环境变量,则必须重新启动该进程。如果您的安装程序因为缺少路径信息而失败,您将不得不解决这个问题。
发布于 2013-05-09 21:53:29
按照following MSDN article中的说明,尝试向所有窗口发送WM_SETTINGCHANGE消息。
SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,0,(LPARAM)“环境”,SMTO_ABORTIFHUNG,5000,&dwReturnValue);
https://stackoverflow.com/questions/16442616
复制相似问题