在受保护模式下从c#打开Winword

时间:2014-07-13 08:31:30

标签: c# ms-word

有没有办法启动WinWord以protected mode/view打开文件?

我没有使用Word Automation - 只需启动导致Winword.exe从c#启动的文档。

这是代码

Process wordProcess = System.Diagnostics.Process.Start("C:\\\\check.docx");.

我要添加什么来指示WinWord不能正常打开文件,而是在文档顶部显示ProtectedView栏?

1 个答案:

答案 0 :(得分:2)

Word 2010及以上

Word 2010中存在一个名为ViewProtected的动词。

string path = @"c:\path\to\file";
string file = "check.docx";

ProcessStartInfo psi = new ProcessStartInfo(Path.Combine(path, file));
psi.Verb = "ViewProtected";
Process wordProcess = System.Diagnostics.Process.Start(psi );

或者您可以使用命令行选项/ vp

[path to winword.exe]\WinWord.exe  /vp  "c:\path\to\file\check.docx";

替代选项

对于早期版本,没有commandline arguments或动词可以让您在protectedmode中打开文件。

您可以使用动词OpenAsReadOnly或使用解决方法是复制原始文件并在打开前将其标记为只读在磁盘上。以下代码演示了:

string path = @"c:\Your\Path\to\the\file";
string file = "check.docx";
// make copy
string tmp = Path.GetTempFileName().Replace(".tmp", Path.GetExtension(file));
File.Copy(Path.Combine(path,file), tmp );
// make it Read-Only
File.SetAttributes(tmp, FileAttributes.ReadOnly);
// Open the copy
Process wordProcess = System.Diagnostics.Process.Start(tmp );

wordProcess.EnableRaisingEvents = true;

// remove the file as soon as  the process ends
wordProcess.Exited += (o, args) =>
    {
        File.SetAttributes(tmp, FileAttributes.Normal);
        File.Delete(tmp);
    };