【发布时间】:2014-07-08 03:11:07
【问题描述】:
这很难解释,但我会尽力而为。 我编写了一个 C# 程序,并且正在使用 DLLImport 访问外部 C++ DLL 中的非托管代码。 C++ DLL 是 Java 程序的包装器。 如果我在 DOS 批处理文件中调用我的 C# 程序,该文件设置 C++/Java 外部函数所需的各种环境变量,我只能让它工作。 我希望能够不使用 DOS 批处理文件并使用我的 C# 程序设置和控制环境变量。 向任何人寻求提示,因为我还没有找到一种方法来做到这一点,或者知道它是否可能。 谢谢。
【问题讨论】:
-
这无法完成,因为每个 .NET 应用程序都有自己的环境变量“缓存”。这些与操作系统隔离。此外,即使使用本机 P/Invoke 调用来设置环境变量,“缓存”也不会更新。这意味着启动应用程序的堆栈不会看到这些更改。
-
我知道您已经说过这无法完成,但是当我以管理员身份运行我的应用程序时,DLL 调用所有工作。所以他们似乎可以访问设置的用户环境变量。
标签: java c# variables dllimport environment