我使用WiX创建了一个安装程序。安装程序做的一件事是设置一个环境变量PLUGIN_DIRECTORY(它在系统级别)。
在我编写的一些C#代码中,我需要访问该变量,以便我可以观看某个目录。我通过以下代码执行此操作:
FileSystemWatcher water = new FileSystemWatcher();
watcher.Path = Environment.GetEnvironmentVariable("PLUGIN_DIRECTORY") + "\\";
不幸的是(当我调试时),所有watcher.Path都设置为“\”。
安装后是否需要重启?我不明白为什么变量已经设置好了。还有其他建议吗?我没有收到任何错误 - 它只是没有看到正确的道路。
由于
答案 0 :(得分:9)
如果您在创建环境变量时打开了visual studio,那么我不知道它是否会在您关闭并重新启动VS之前将其取出。当一个进程启动时,它从它的父进程继承环境变量。我不确定VS在构建后如何启动可执行文件,但它可能是一个子进程,因此不会获取新的环境变量。
答案 1 :(得分:0)
可以肯定的是,PLUGIN_DIRECTORY在安装程序运行后是否设置了任何内容?
答案 2 :(得分:0)
我很抱歉,如果我非常错,我无法确认这一点,因为我没有安装编译器。 但你可以尝试使用: watcher.Path = Environment.GetEnvironmentVariable(“%PLUGIN_DIRECTORY%”)+“\”;
即%PLUGIN_DIRECTORY%,而不仅仅是PLUGIN_DIRECTORY。
希望有任何帮助
答案 3 :(得分:0)
系统环境是从父级继承的,更新后,其他进程无法识别。
我们可以从“机器”通过负载环境刷新过程环境并保存到“过程”。
string SysEnvir = System.Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine);
System.Environment.SetEnvironmentVariable("Path", SysEnvir, EnvironmentVariableTarget.Process);