使用 ProcessStartInfo 打开 chm

Using ProcessStartInfo to open chm

我正在尝试使用 C# 打开一个旧的 chm(已编译 HTML)文件到指定的书签 - 不要问为什么 ;)

var psi = new ProcessStartInfo("hh.exe");
psi.Arguments = @"ms-its:X:/MyApplication/Help/MYHELPFILE.chm::MYHELPFILE.htm#36531"; // 36531 is my "topic path"
var cmdProcess = Process.Start(psi);

这会打开正确的文件,但无法打开到书签位置 (36531)。

当我直接从命令行调用 hh 时,它在书签位置显示了正确的文件:

hh ms-its:X:/MyApplication/Help/MYHELPFILE.chm::MYHELPFILE.htm#36531

我正在使用指定的命令行参数 here

为什么这两种传递参数的方法不等价?为什么我通过 Process.Start 调用时我的书签被忽略了?

此问题与通过网络打开文件有关,MS 出于安全原因默认阻止了该文件。

以下修复适用于直接打开文件: https://www.helpscribble.com/chmnetwork.html

但是,当通过子进程打开时,这不起作用(加载文件,但没有 HTML 内容)。

解决方法:将所有.chm文件复制到本地目录,例如C:/help/,然后从那里读取。