小编use*_*718的帖子

禁止 MS-Office 应用程序以编程方式发送遥测数据

我们在自己的应用程序中使用带有导入的 ActiveX 类型库的 MS-Office 应用程序(例如,将 MS-Office 文档即时转换为 PDF)。

我们的应用程序有意等待直到 MS-Office 应用程序后台线程结束。
自 MS-Office 2019 版以来,我们注意到后台线程阻塞了很长时间(18-25 秒)。原因显然是 MS-Office 应用程序关闭/退出后立即发送遥测数据。
使用 ProgMon 工具进行监控已证明了这一点。

我们还发现有一种解决方法,可以通过操作以下注册表项来禁用发送遥测数据:

Computer\HKEY_CURRENT_USER\Software\Microsoft\Office\Common\ClientTelemetry: REG_DWORD-Value (32bit): Disable Temetry: 1
Run Code Online (Sandbox Code Playgroud)

如果这样做,阻塞时间将减少到 3-5 秒。

这是我们的应用程序所做的代码片段(几乎是我们用来隔离和测试问题的核心功能):

procedure TForm59.ConvertEarlyBinding(const _documentFilePath : string; 
                                      bOnlyOpenClose: Boolean = False);
var
    WordApp : ActiveX.TypeLibs.Word.Application;
    WordDoc : ActiveX.TypeLibs.Word.Document;

    oleTrue : OleVariant;
    oleFalse : OleVariant;
    emptyVariant : OleVariant;
begin
    oleTrue := True;
    oleFalse := False;
    emptyVariant := EmptyParam;

    WordApp := ActiveX.TypeLibs.Word.coApplication.Create;    
    WordApp.Visible := True;

    WordDoc := WordApp.Documents.Open(_documentFilePath, EmptyParam, oleTrue, 
                                      EmptyParam, EmptyParam, …
Run Code Online (Sandbox Code Playgroud)

windows delphi com ms-office

5
推荐指数
1
解决办法
2988
查看次数

标签 统计

com ×1

delphi ×1

ms-office ×1

windows ×1