在计算机中分离 Microsoft.Office.Interop.Word 个实例和 Word 应用程序

Separate Microsoft.Office.Interop.Word instance and Word app in machine

在我的应用程序中,我想通过

使用 Microsoft Word

Microsoft.Office.Interop.Word

Microsoft.Office.Interop.Word.Application _wordApplication
= new Microsoft.Office.Interop.Word.Application();
this._wordApplication.Documents.Add();

object _readOnly;
    object _addToRecentFiles;
    object _confirmConversion;
    object _trueValue;
    object _falseValue;
    object _visible;
    object _nullObj;
object fileName = @"C:/FileName.doc";

var doc = _wordApplication.Documents.Open(ref fileName, ref _confirmConversion, ref _readOnly, ref _addToRecentFiles,
                    _oMissing, _oMissing, _oMissing, _oMissing, _oMissing, _oMissing, _oMissing, _visible, _oMissing,
                    _oMissing, _oMissing, _oMissing);

我想将我机器上的单词应用程序和我的解决方案中的单词分开,因为如果我通过以下步骤修改机器上的单词应用程序

View > Read Mode

并关闭单词应用 然后 我在我的解决方案中打开这个词 >> 这个词将在

中打开

Read Mode not Print layout mode

所以我的问题是如何在我的解决方案中区分 Word 应用程序和 word 实例 我希望我的解决方案中的任何更改都不会影响我机器中的 Microsoft Office Word,反之亦然

由于 Word 在注册表(以及 Normal.dotm 模板中的其他设置)中存储许多设置值的方式,在单个 用户配置文件 键下,它不是可以选择或更改 Word 应用程序在退出时保存的内容,无论设置更改是由用户还是代码进行的。此行为是设计使然,无法进行不同的配置。

保持完全独立环境的唯一方法是 运行 不同用户配置文件下的 "interop" 版本。

除此之外,为了确保 "interop" 环境 运行 具有与最终用户环境不同的设置,"interop" 代码需要注意每个关注的设置它开始时,将这些设置更改为其自身所需的设置,并在结束时重置为 "interop" 启动时保存的设置。

可能会在 "Safe Mode" 中启动 Word 进程,这将 运行 Word 使用安装默认值,但这仍然意味着在实例启动时创建设置。而且,根据代码的作用,可能还有其他 limitations/problems 涉及在安全模式下工作。

理论上,另一种方法是保存设置注册表项 - 我记得有多个键存储设置,用具有所需的键替换它们设置,启动 "interop" 实例,然后在 "interop" 结束时反转过程。这本质上就是第一种方法所做的,并且可能 运行 在没有管理员权限的最终用户环境中出现问题,所以我只是为了完整起见才提到它。