我可以在要从 Windows 脚本宿主调用的服务中拥有 COM 接口吗?
Can I have a COM interface in a service to be called from Windows Script Host?
我的目标是在我的 Windows 本地服务中创建一个 COM 接口,用 C++/MFC 编写,其方法可以从 Windows Script Host
JScript 代码 运行 下调用登录交互式用户帐户。
例如,如果我有一个 test.js
可以使用登录用户的凭据启动,它会执行以下操作:
var Obj = new ActiveXObject("myservice.somename");
var Result = Obj.MyMethod("some data");
然后在我的服务中处理 MyMethod
函数 & return 一个值。
我知道这是一个笼统的概念。在这个阶段,我很好奇这是否可能(从 Windows 安全的角度来看,即从用户进程调用系统服务),如果是的话,是否有任何示例代码可以用作基础这个?
我假设它一定是某种 COM 接口,对吧?但通常那些进入 DLL。我从未尝试过将它们投入服务。
谢谢!
我 post 将它作为我自己未来的参考,尽管我在评论中对我的原始 post 进行了处理。如果有人向我指出这篇文章,我会节省一天的搜索时间...
这篇 CodeGuru 文章“COM in plain C, Part 2”解释了如何创建可以从 Windows Script Host
调用的 COM 接口。他的 IExample2
项目展示了如何创建一个进程内 DLL,该 DLL 承载 COM 接口,可以从同一项目中包含的 VBScript 调用该接口。然后 regiexample2
和 unregiexample2
项目还展示了如何 register/unregister COM 接口。可以轻松调整 VBScript 以在我的 OP 中使用 JScript。
不过请注意,该项目旨在用于在 32 位 OS 上进行安装。对于 64 位 OS,您将需要构建并注册进程内 COM Dll 的 64 位版本。来自 32 位进程的注册部分与显示的部分类似,只是在 opening/creating 注册表项时需要包含 KEY_WOW64_64KEY
标志。
我的目标是在我的 Windows 本地服务中创建一个 COM 接口,用 C++/MFC 编写,其方法可以从 Windows Script Host
JScript 代码 运行 下调用登录交互式用户帐户。
例如,如果我有一个 test.js
可以使用登录用户的凭据启动,它会执行以下操作:
var Obj = new ActiveXObject("myservice.somename");
var Result = Obj.MyMethod("some data");
然后在我的服务中处理 MyMethod
函数 & return 一个值。
我知道这是一个笼统的概念。在这个阶段,我很好奇这是否可能(从 Windows 安全的角度来看,即从用户进程调用系统服务),如果是的话,是否有任何示例代码可以用作基础这个?
我假设它一定是某种 COM 接口,对吧?但通常那些进入 DLL。我从未尝试过将它们投入服务。
谢谢!
我 post 将它作为我自己未来的参考,尽管我在评论中对我的原始 post 进行了处理。如果有人向我指出这篇文章,我会节省一天的搜索时间...
这篇 CodeGuru 文章“COM in plain C, Part 2”解释了如何创建可以从 Windows Script Host
调用的 COM 接口。他的 IExample2
项目展示了如何创建一个进程内 DLL,该 DLL 承载 COM 接口,可以从同一项目中包含的 VBScript 调用该接口。然后 regiexample2
和 unregiexample2
项目还展示了如何 register/unregister COM 接口。可以轻松调整 VBScript 以在我的 OP 中使用 JScript。
不过请注意,该项目旨在用于在 32 位 OS 上进行安装。对于 64 位 OS,您将需要构建并注册进程内 COM Dll 的 64 位版本。来自 32 位进程的注册部分与显示的部分类似,只是在 opening/creating 注册表项时需要包含 KEY_WOW64_64KEY
标志。