|
5
|
| Martin Marconcini · 技术社区 · 15 年前 |
|
|
1
5
如果exe具有清单,则在调用Start之前,应将进程对象上的UseShellExecute设置为true。无论如何,这不是个坏主意。 |
|
2
8
然而,这一例外却相当奇怪。我绝对建议你告诉客户更新他们的反恶意软件工具。 |
|
3
3
正如凯特·格雷戈里指出的,如果你想“模仿”用户双击图标,你 将UseShellExecute设置为true。设置此标志使代码使用完全不同的路径,使用底层窗口 ShellExecute 现在,我要补充一点,如果你在一个安装了UAC的Windows(Vista,7,2008,…)上运行,你可能还应该尝试使用 符文 所解释的动词 here here .
|
|
|
4
1
我过去也遇到过类似的问题。我通过执行cmd应用程序解决了这个问题,如下所示:
|
|
|
5
1
如果可能的话,我会用 Process Monitor 来自Sysinternals。启动时,可以取消选择工具栏上的注册表和网络活动(右侧的5个图标)。然后您只看到进程和磁盘活动。因为它看起来像一个文件找不到问题,你应该使用过滤器对话框(6。图标从左边)从下拉列表中选择进程名(默认为体系结构)并输入失败的可执行文件名。这将极大地限制捕获的输出,以便您可以看到发生了什么。然后启动可执行程序并在结果列中检查“找不到名称”结果。这是搜索文件但未找到文件的位置。如果您知道有问题的dll名称,可以像往常一样用Ctrl+F来搜索它。然后,您可以比较工作应用程序和从应用程序启动时的不同搜索路径。
|
|
|
6
0
我相信汉斯·帕桑特是在正确的轨道上。除了他所说的,检查以确保ddip.dll和exe位于同一目录中。情况并非总是如此 other ways 将程序集绑定到bin外部。即,GAC和AssemblyResolve事件。考虑到你的情况,我看不出GAC有什么牵连。检查启动的exe代码是否有钩子指向 AssemblyResolve 因为您得到了一个关于丢失的DLL的异常,所以我对有关路径分隔符问题的答案几乎没有信心。但是,您有应用程序代码,因此请验证它是否引用了ddip.dll。这将使您确信您实际上引用的是正确的.exe,因此这不仅仅是命令提示符的路径分隔符问题(例如,错误解释的空格)。 |