为什么 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。
使用 "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。