Могу ли я иметь интерфейс COM в службе, которая будет вызываться из Windows Script Host?

Моя цель — создать COM-интерфейс в моей локальной службе Windows, написанной на C ++ / MFC, чьи методы можно вызывать из Windows Script Host Код JScript, выполняемый под зарегистрированной интерактивной учетной записью пользователя.

Например, если у меня есть test.js который может быть запущен с учетными данными вошедшего в систему пользователя, который выполняет следующие действия:

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

а затем есть MyMethod функция обработана в моем сервисе & вернуть значение.

Я знаю, что это общая концепция. На данном этапе мне любопытно, возможно ли это (с точки зрения безопасности Windows, то есть вызова системной службы из пользовательского процесса) и, если да, есть ли какой-нибудь пример кода, который я могу использовать в качестве основы для этого?

Я предполагаю, что это должен быть какой-то интерфейс COM, верно? Но обычно они идут в DLL. Я никогда не пытался поставить их на службу.

Спасибо!

-3

Решение

Я публикую его для собственного использования в будущем, несмотря на то, как я обращаюсь в комментариях к моему первоначальному сообщению. Это спасло бы мне день поиска, если бы кто-то указал мне на эту статью …

Эта статья CodeGuru «COM в простой C, часть 2«объясняет, как создать интерфейс COM, который может быть вызван из Windows Script Host, Его IExample2 В проекте показано, как создать внутрипроцессную DLL-библиотеку, в которой размещается интерфейс COM, который можно вызывать из VBScript, включенного в тот же проект. затем regiexample2 а также unregiexample2 проекты также показывают, как зарегистрировать / отменить регистрацию интерфейса COM. VBScript можно легко настроить для работы с JScript в моем OP.

Одно предостережение, однако, этот проект предназначен для установки на 32-битную ОС. Для 64-битной ОС вам нужно будет собрать и зарегистрировать 64-битную версию In-proc COM Dll. Часть регистрации из 32-битного процесса похожа на показанную, за исключением того, что необходимо включить KEY_WOW64_64KEY флаг при открытии / создании ключей реестра.

0

Другие решения


По вопросам рекламы [email protected]