【问题标题】:VB6 EXE with argument working in CMD file, but not in C# codeVB6 EXE,参数在 CMD 文件中工作,但不在 C# 代码中
【发布时间】:2015-01-18 22:11:57
【问题描述】:

我有一个 VB6 EXE,我想通过 C# 代码触发它,如下所示。这段代码执行后,我可以看到exe已经在taskmanager中启动了,过了一段时间就完成了。

我将代码部署在 IIS 服务器中。开始浏览该站点并单击启动 VB6SOME.exe 的 c# 代码按钮。 Exe 启动但从未完成(任务管理器显示用户网络服务的 VB6SOME.exe)。

 prcstrinfo.FileName = "VB6SOME.exe";
prcstrinfo.Arguments = "USERID,PASSWORD," + DateTime.Now.ToShortDateString();          
Process proc = Process.Start(prcstrinfo);

另外,我尝试通过传递所有必要参数的 CMD 调用 VB6SOME.exe。它开始并正确完成。 (我还监控了TaskManager,我看到它以我的ID而不是网络服务启动)。请帮助解决问题。

【问题讨论】:

  • 您可以尝试捕获应用程序的退出代码,看看是否能给您带来任何见解。您可以在服务器上手动运行 exe(使用相同的参数)吗?
  • 是的 - 我可以通过服务器中的 CMD 运行 exe,没有任何问题。唯一的区别是当我运行 CMD 文件时,用户名显示为 My ID,但当它运行 C# 时,用户名显示为 NETWORK SERVICE
  • 那么这就是你的答案......!

标签: c# com vb6 registry 32bit-64bit


【解决方案1】:

注册表重定向器

注册表重定向器通过在 WOW64 上提供注册表关键部分的单独逻辑视图来隔离 32 位和 64 位应用程序。注册表重定向器拦截对每个逻辑注册表视图的 32 位注册表调用,并将它们映射到相应的物理注册表位置。重定向过程对应用程序是透明的。因此,32 位应用程序可以像在 32 位 Windows 上运行一样访问注册表数据,即使数据存储在 64 位 Windows 上的不同位置。

为以下注册表项启用重定向:

HKEY_LOCAL_MACHINE\软件

来自 Windows SDK 64 位开发指南

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多