【发布时间】:2018-05-22 11:29:43
【问题描述】:
我正在尝试使用第 3 方 API 来打印 html 文件。当我在 WinForm 应用程序中使用供应商的 SDK 时,它在 InternetExplorer 操作期间失败。 (错误如下)所以我发现该进程应该只在“管理员”权限下运行。然后,应用程序和打印操作运行良好。
调用的对象已与其客户端断开连接。 (例外来自 HRESULT:0x80010108(RPC_E_DISCONNECTED)):堆栈跟踪:在 System.Runtime.InteropServices.ComTypes.IConnectionPoint.Unadvise(Int32 dwCookie) 在 SHDocVw.DWebBrowserEvents2_EventProvider.remove_TitleChange(DWebBrowserEvents2_TitleChangeEventHandler ) 在 SHDocVw.InternetExplorerClass.remove_TitleChange(DWebBrowserEvents2_TitleChangeEventHandler )
我的问题在那之后开始。我必须使用相同的 API 在代理的 UWP 应用程序中打印。假设它是一个分配访问/信息亭应用程序。我知道 UWP 无法在用户提升的情况下运行,但我认为代理应用程序应该有一些设置可以运行,基本上是以管理员身份运行“dllhost.exe”。由于应用程序应该在分配的访问模式下运行,我无法将分配的访问用户设置为管理员。 (我怀疑即使我设置它也会起作用)
是否有可能以管理员身份运行 dllhost.exe?或任何其他问题建议?
【问题讨论】:
-
由于您已经拥有代理组件的安装程序,您是否尝试在设置为自动提升的代理组件旁边安装 EXE?然后我相信你应该能够从你的代理组件调用 CreateProcess(或 Process.Start)来启动提升的进程来执行任何需要提升的操作。
-
@StefanWickMSFT 是的,我想过,它似乎工作。但我的首要任务是将其作为与 API 正确通信的进程内操作。我目前正计划与 MSMQ 进行通信。我可以选择与 EXE 通信吗?
-
我认为这里可以使用任何标准的 Win32 进程间通信机制(套接字、RPC 等)。正确的选择取决于您的要求,例如复杂性、频率、通信量。
标签: c# uwp elevated-privileges