2015-06-02 7 views
-3

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

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

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

и затем MyMethod функцию обработанных в моей службе & возвращает значение.

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

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

Спасибо!

+1

Я хотел бы получить объяснение от тех, кто хочет сжать/закрыть ... – c00000fd

+0

_ «Я был бы признателен за разъяснение от тех, кто хочет сжать/закрыть.» _ Здесь вы идете: _Questions просят нас рекомендовать или найти книгу, инструмент, библиотека программного обеспечения, учебник или другой ресурс вне сайта не относятся к теме для переполнения стека, поскольку они, как правило, привлекают упрямые ответы и спам. Вместо этого опишите проблему и то, что было сделано до сих пор, чтобы ее решить. В частности, для этой части вашего вопроса: «... если есть какой-то образец кода, который я могу использовать в качестве основы для этого?» _ –

+0

@ πάνταῥεῖ : Что так упрямо? Разве я не объяснил проблему? – c00000fd

ответ

0

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

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

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