Process.Start 并不总是有效
Process.Start does not always work
我创建了一个协议生成工具,它从网络资源中读取一些数据,允许用户过滤一些字段并根据给定的过滤数据生成协议。该协议生成为 word 文档,在显示给用户之前在多个层次上多次编辑。
对于某些用户,行:
Process.Start(pathtowordfile)
打不开 Word,对其他人来说它工作正常。
更奇怪:如果用户在第一次打开时尝试生成协议。如果他们更改其中一个过滤器并再次生成,则文件不会打开。但它是正确生成的,您可以手动打开它。
我们在所有机器上使用 Windows 7,一般来说,用户在机器上没有管理员权限。
有没有替代品
Process.Start()
?
不确定代码有时如何工作,但我认为关键是确保在尝试 Process.Start 非可执行文件时设置 UseShellExecute=true。
https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.useshellexecute%28v=vs.110%29.aspx
我已经有一段时间没有研究它了,但最后我检查了 shell execute 依赖于 Word 应用程序在 DDE 中正确注册,所以 Windows 知道如何处理 .文档(x)文件。可能未安装 Word "properly"。
在尝试了各种方法(包括 Wonko 的提示)之后,我决定使用 interop.Word.Wordapplication 来显示文档。它没有解释为什么 process.start 没有完成这项工作,但无论如何,现在每个用户都很高兴^^
我创建了一个协议生成工具,它从网络资源中读取一些数据,允许用户过滤一些字段并根据给定的过滤数据生成协议。该协议生成为 word 文档,在显示给用户之前在多个层次上多次编辑。
对于某些用户,行:
Process.Start(pathtowordfile)
打不开 Word,对其他人来说它工作正常。
更奇怪:如果用户在第一次打开时尝试生成协议。如果他们更改其中一个过滤器并再次生成,则文件不会打开。但它是正确生成的,您可以手动打开它。
我们在所有机器上使用 Windows 7,一般来说,用户在机器上没有管理员权限。
有没有替代品
Process.Start()
?
不确定代码有时如何工作,但我认为关键是确保在尝试 Process.Start 非可执行文件时设置 UseShellExecute=true。 https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.useshellexecute%28v=vs.110%29.aspx
我已经有一段时间没有研究它了,但最后我检查了 shell execute 依赖于 Word 应用程序在 DDE 中正确注册,所以 Windows 知道如何处理 .文档(x)文件。可能未安装 Word "properly"。
在尝试了各种方法(包括 Wonko 的提示)之后,我决定使用 interop.Word.Wordapplication 来显示文档。它没有解释为什么 process.start 没有完成这项工作,但无论如何,现在每个用户都很高兴^^