为什么 Microsoft 生态系统元数据交换需要 Windows 10 上的管理员提升?

Why does the Microsoft Ecosystem Metadata Exchange require Administrator elevation on Windows 10?

使用 "Microsoft Ecosystem Metadata Exchange (EMX)" 工具(这是您用来为 Windows 错误报告注册应用程序的工具),尝试扫描任何文件都会将以下消息记录到 "Application Log"系统日志:

Message            : [Microsoft.Telemetry.MetadataExchange.SystemFileMetadataProvider: 56593614]: Unable to scan the given file due to the following exception:


                     System.Runtime.InteropServices.COMException (0x80070522): A required privilege is not held by the client. (Exception from HRESULT:
                     0x80070522)
                            at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
                            at Microsoft.Telemetry.MetadataExchange.CrossProcessFileScanner.ScanFile(String path)
                            at Microsoft.Telemetry.MetadataExchange.SystemFileMetadataProvider.GetMetadata(String filePath)


                     __________________________________________________________________________________________________________________________________________
                     __________________
                     Logged   at Microsoft.Telemetry.MetadataExchange.FileMetadataScanner.Scan()
                            at Microsoft.Telemetry.MetadataExchange.Presentation.ScanProgressDialogModel.worker_DoWork(Object sender, DoWorkEventArgs e)
                            at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
                            at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
                            at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
                            at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
                            at System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.ThreadPoolCallBack(Object o)
                            at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
                            at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
                            at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
                            at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
                            at System.Threading.ThreadPoolWorkQueue.Dispatch()
                            at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

我使用 EMX 的 powershell 绑定得到了相同的结果。

如果我 运行 来自 Elevated 命令提示符的 powershell 绑定工具本身,它确实有效。

我假设这是一个最近的问题(Windows 10?),因为 the documentation 没有提到这个问题,并且工具本身在启动时没有给出任何错误。

要求提升的限制在 Windows 10 中有所改变吗?我是否可以通过某种方式解决这个问题? (即,我可以在没有提升的情况下以某种方式让它工作吗?)

我确实从微软支持那里得到了答复:

We are aware of this. It was not expected but, depending the outcome of my investigation, running elevated may become the official method.

我的意思是,目前还没有真正解决该问题的方法,您只需要 运行 以管理员身份使用 EMX。