c# - 使用 ProcessStartInfo 打开 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
我正在使用此处指定的命令行参数。
为什么这两种传递参数的方法不等效?当我通过 Process.Start 调用时,为什么我的书签会被忽略?
解决方案
该问题与通过网络打开文件有关,出于安全原因,MS 默认已阻止该文件。
以下修复适用于直接打开文件: https ://www.helpscribble.com/chmnetwork.html
但是,当通过子进程打开时,这不起作用(加载文件,但没有 HTML 内容)。
解决方案:将所有 .chm 文件复制到本地目录,例如 C:/help/ 并从那里读取。
推荐阅读
- nextcloud - Nextcloud 访问 apache 日志循环
- cassandra - Cassandra:低可用性以获得更高的一致性
- c# - 查询 cosmos db 文档过滤文档
- javascript - 遍历名称列表并遍历颜色列表并将背景颜色样式绑定到其中一个名称
- vue.js - Nuxt.js/auth-next,如何接收google用户信息和用户ID?
- kubernetes - 手术失败。检查卸载运行程序的 pod 日志以获取更多详细信息
- spring - 如何在 spring data elasticsearch 中使用 Analyze API?
- python - Python Tkinter:如何链接按钮以在 Windows 10 上打开特定应用程序?
- scala - 如何在 Spark Scala 中的 Schema RDD [从案例类中创建] 中查找重复项以及相应的重复计数?
- yaml - 验证空条目的架构