【问题标题】:Can I have a COM interface in a service to be called from Windows Script Host?我可以在从 Windows 脚本主机调用的服务中有一个 COM 接口吗?
【发布时间】:2015-08-16 18:10:33
【问题描述】:

我的目标是在我的 Windows 本地服务中创建一个 COM 接口,用 C++/MFC 编写,可以从在登录的交互式用户帐户下运行的 Windows Script Host JScript 代码调用其方法。

例如,如果我有一个 test.js 可以使用已登录用户的凭据启动,则执行以下操作:

var Obj = new ActiveXObject("myservice.somename");
var Result = Obj.MyMethod("some data");

然后在我的服务中处理MyMethod 函数并返回一个值。

我知道这是一个笼统的概念。在这个阶段,我很好奇这是否可能(从 Windows 安全的角度来看,即从用户进程调用系统服务),如果是这样,是否有任何示例代码可以用作此基础?

我假设它一定是某个 COM 接口,对吧?但通常这些会进入 DLL。我从未尝试将它们放入服务中。

谢谢!

【问题讨论】:

  • 我会感谢那些想要投票/关闭的人的解释......
  • “我希望得到那些想要投票/关闭的人的解释。” 你去吧:要求我们推荐或查找书籍、工具、软件的问题图书馆、教程或其他非现场资源对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。 特别是对于您问题的这一部分:"...如果有任何示例代码可以用作此基础吗? "
  • @πάνταῥεῖ:这有什么好固执的?我没有解释问题吗?
  • 您要的是第 3 方示例或 gimme teh codez 回答问题。那是题外话。
  • “Stackoverflow 在哪里找到这些巨魔……” 好吧,这样称呼我是非常不合理的(以及其他人,已经同意并拒绝/关闭您的问题)。我只是在这里鼓励我做我的工作:如果你有疑问,请再次阅读“What topics can I ask about here?2。或者在Meta-SO上提问。我 - 不是 - 一个 - 巨魔!

标签: c++ com mfc jscript wsh


【解决方案1】:

尽管我在原始帖子的 cmets 中得到了治疗,但我仍将其发布为我自己的未来参考。如果有人将我指向这篇文章,我会节省一天的搜索时间......

这篇 CodeGuru 文章“COM in plain C, Part 2”解释了如何创建一个可以从Windows Script Host 调用的 COM 接口。他的IExample2 项目展示了如何创建一个进程内DLL,该DLL 承载可以从同一项目中包含的VBScript 调用的COM 接口。然后regiexample2unregiexample2 项目也展示了如何注册/注销COM 接口。可以轻松调整 VBScript 以在我的 OP 中与 JScript 一起使用。

但请注意,该项目旨在用于安装在 32 位操作系统上。对于 64 位操作系统,您需要构建和注册 64 位版本的进程内 COM Dll。 32 位进程的注册部分与所示的类似,只是在打开/创建注册表项时需要包含KEY_WOW64_64KEY 标志。

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2013-03-17
    • 1970-01-01
    相关资源
    最近更新 更多