【发布时间】:2016-09-10 07:21:04
【问题描述】:
Windows Subsystem For Linux(Win10 中的新技术)使用LxssUserSession 服务。此服务未记录,但它用作 WSL 的 API(bash.exe 使用此服务运行 ELF)。如我所见,它是 COM 的一部分:注册表中有 CLSID 记录,其中有 AppID。而AppID 有LocalService 记录:LxssUserSession。
我对COM不熟悉,但如果我理解正确的话,应该有这个服务支持的COM组件。由于没有 ProgID,我无法从脚本创建此 COM 的实例,但我尝试使用 OleView 实例化它。但是,它报告 CoCreateInstance 返回错误。如何调试此错误?是不是不能创建 COM 组件并将其用于不同的东西(即有一些其他接口)。通常可以使用未记录的 COM 组件吗?我可以跟踪对此服务的bash.exe 调用(类似于logger.exe 或ltrace,但对于COM?)
一些背景: 这是我得到的错误:http://s32.postimg.org/wpthro5kl/error.png
bash.exe != /bin/bash。 bash.exe 是连接到LxssUserSession 并要求它运行/bin/bash 的PE(Win64 bin 应用程序)(这是ELF(Linux 应用程序!)。bash.exe 最好称为“WLS.exe”,但对于某些人来说他们称之为bash.exe的原因。
请看这里:https://msdnshared.blob.core.windows.net/media/2016/04/LXSS-diagram-1024x472.jpg,这是它的标题http://s32.postimg.org/khjjf81th/bash.png。
所以,我确信bash.exe 使用 COM 连接到LxssUserSession 和LxssUserSession 使用 Pico (Psp..) 函数将 ELF 作为“pico 进程”启动(参见此处https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/)。
两者都没有记录,但我相信我可以以某种方式使用 COM,但是我收到了我作为第一个链接提供的错误:(
【问题讨论】:
-
我已经发布了关于 bash 的错误和评论,请查看我的帖子的新版本
-
谢谢,这很有趣,而且比我最初阅读的 WSL 描述更有意义。所以可能是真正的 COM 问题,与 WSL 本身无关。我从来没有使用过 COM,所以可能帮不上什么忙,抱歉 - 但 Google 搜索错误代码后出现了一些结果,提示您可能需要调用 CoSetProxyBlanket。
标签: windows com ole windows-subsystem-for-linux