【发布时间】:2018-07-10 10:24:41
【问题描述】:
我有一个 VB6 可执行文件,它正在访问一些系统环境变量。我已经实现了一个 .NET 控制台应用程序,它检查这些环境变量是否存在,如果需要创建它们,然后通过调用 Process.Start 运行 VB6 应用程序。
执行此操作后,VB6 应用程序找不到环境变量,并说它们不存在。
如果我从 Windows 资源管理器运行 VB6 应用程序,它可以正常工作并且可以找到变量。
看来 VB6 应用程序是在 .NET 控制台应用程序的上下文中运行的,并且无法访问系统环境变量!
设置环境变量的代码 .NET Cosnole 应用程序:
foreach(var varObject in Variables)
{
var envVar = Envrionment.GetEnvironmentVariable(varObject.Name ,
EnvironmentVariableTarget.Machine);
if(string.IsNullOrEmpty(envVar)
{
Environment.SetEnvironmentVariable(varObject.Name,varObject.Value,
EnvironmentVariableTarget.Machine);
}
}
从 .NET Cosnole 应用程序运行 VB6 应用程序的代码:
var processInfo = new ProcessStartInfo(VB6ApplicationFilePath);
processInfo.UseShellExecute = true
processInfo.WindwoStyle= ProcessWindowStyle.Hidden;
Process.Start(processInfo);
【问题讨论】:
-
您能分享一下您的代码有问题的部分吗? (首先,见:“minimal reproducible example”)
-
你如何设置环境变量?
-
您发布更新时似乎缺少环境变量的实际设置,您可以添加缺少的位吗?
-
刚刚更新。谢谢。
标签: c# visual-studio vb6 console-application