0

我需要我的应用程序(Master)在特定事件上运行另一个应用程序(Worker)。

如果我将我的 Worker 应用程序作为标准可执行文件分发,那么一切都很好,我可以毫无问题地使用 Process.Start 并愉快地传递参数并调用 WaitForExit。

如果我将 Worker 应用程序作为 ClickOnce 应用程序分发,它会创建一个应用程序引用,我可以从 Process.Start 开始(一旦我将它的副本放在与我的 Master.exe 相同的目录中),但我不能传递它的参数或使用 WaitForExit。

我希望两者都能做到。我怀疑对引用的调用会启动 Worker 可执行文件实际运行的另一个进程。

我的代码:

// This works as I expect, and returns a valid Process.
Process p0 = Process.Start("Worker.exe", "DoSomeMagic");
// This seems to work, but returns null.
Process p1 = Process.Start("Worker.appref-ms");
// This also returns null, but does not pass the argument to Worker.
Process p2 = Process.Start("Worker.appref-ms", "DoSomeMagic"); 

我的问题:

我该如何“正确”地做到这一点?

4

1 回答 1

1

默认情况下,ClickOnce 应用程序不允许传递命令行参数(或者,在他们的情况下,通过查询字符串传递参数)。您需要在清单文件中配置适当的选项以允许它们,但即便如此,也需要考虑几个警告。整个 ClickOnce 平台对应用程序的执行方式以及它们的启动方式施加了一些非常恶劣的限制。当然,这都是打着安全的幌子,但我个人认为是短视。

有关如何将参数传递给 ClickOnce 应用程序的更多信息:http: //msdn.microsoft.com/en-us/library/ms172242.aspx

于 2010-08-23T15:12:19.363 回答