1

Тема: WSH: Использование COM-сервера без его регистрации в системе

Есть тема VBScript: работа с WSC-серверами без их регистрации
А можно ли задействовать таким же обазом dll и ocx?
Метод GetObject с указанием пути к файлу выдаёт ошибку.

Set DX = GetObject("C:\DynamicWrap\dynwrap.dll","DynamicWrapper")

Быть может есть решение?

2

Re: WSH: Использование COM-сервера без его регистрации в системе

Реестр: регистрация COM-компонентов для пользователя

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

3

Re: WSH: Использование COM-сервера без его регистрации в системе

Это как раз таки противоположное.
Мне интересно как использовать COM-objects без регистрации. Думаю такое возможно.
Эх, пойду Г.Борна полистаю, может чего интересного и найду

4

Re: WSH: Использование COM-сервера без его регистрации в системе

kiber_punk
Да не такое уж и противоположное . Собственно, в чём проблема и неудобство регистрации? Только в правах, имхо. А приведённое решение эту проблему вроде как обходит. Можно написать скриптовый код, который зарегистрирует компонент таким способом непосредственно перед его использованием.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

5

Re: WSH: Использование COM-сервера без его регистрации в системе

Думаю, Борна листать бесполезняк. Если бы такое было возможно, уже напропалую бы этим пользовались. Но если чего налистаешь, не забудь поделиться.

6

Re: WSH: Использование COM-сервера без его регистрации в системе

http://habrahabr.ru/blogs/javascript/52027/

Мой пример для wscript.
Я скопировал wscript.exe и dynwrapx.dll в отдельную папку и создал файлы (кодировка utf-8):

фаил

wscript.exe.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity
  type="win32"
  name="wscript.exe"
  version="1.0.0.0" /> 

  <dependency>
          <dependentAssembly>
              <assemblyIdentity
                  type="win32"
                  name="dynwrapx.sxs"
                  version="1.0.0.0" />
          </dependentAssembly>
  </dependency>

  <dependency>
          <dependentAssembly>
              <assemblyIdentity
                  type="win32"
                  name="sqlite3.sxs"
                  version="1.0.0.0" />
          </dependentAssembly>
  </dependency>

  <dependency>
          <dependentAssembly>
              <assemblyIdentity
                  type="win32"
                  name="WSO.sxs"
                  version="1.0.0.0" />
          </dependentAssembly>
  </dependency>

  <dependency>
          <dependentAssembly>
              <assemblyIdentity
                  type="win32"
                  name="Microsoft.Windows.Common-Controls"
                  version="6.0.0.0"
                  publicKeyToken="6595b64144ccf1df"
                  language="*"
                  processorArchitecture="x86"/>
          </dependentAssembly>
  </dependency>

</assembly>

Фаил

dynwrapx.sxs.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity
    type="win32"
    name="dynwrapx.sxs"
    version="1.0.0.0" />

<file name="dynwrapx.dll" hash="1f87eeb37156d64de97d042b9bcfbaf185f8737d" hashalg="SHA1">
     <comClass
        description="DynamicWrapperX Class"
        clsid="{89565275-A714-4a43-912E-978B935EDCCC}"
        threadingModel="Both"
        progid="DynamicWrapperX" />

</file>

</assembly>

(и т.д.)

В принципе можно оставить их в system32.

7

Re: WSH: Использование COM-сервера без его регистрации в системе

Действительно, работает! Спасибо! Кто бы мог подумать. И статью про WSO я уже раньше читал, но как-то пропустил этот момент.

8

Re: WSH: Использование COM-сервера без его регистрации в системе

Замечательно:) Оформим и добавим в коллекцию?

9

Re: WSH: Использование COM-сервера без его регистрации в системе

JSman пишет:

Замечательно:) Оформим и добавим в коллекцию?

Да, прошу Разработчиков это сделать.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

10

Re: WSH: Использование COM-сервера без его регистрации в системе

YMP пишет:

Действительно, работает! Спасибо! Кто бы мог подумать. И статью про WSO я уже раньше читал, но как-то пропустил этот момент.

Хорошо бы поподробнее разжевать, что есть WSO.dll, и как её «готовить».

11

Re: WSH: Использование COM-сервера без его регистрации в системе

alexii пишет:

Хорошо бы поподробнее разжевать, что есть WSO.dll, и как её «готовить».

Наверно хорошо бы, но я в неё толком не вникал, просмотрел бегло, почему и пропустил про трюк с манифестами.

12

Re: WSH: Использование COM-сервера без его регистрации в системе

The gray Cardinal пишет:

Да, прошу Разработчиков это сделать.

Просить всех = просить никого.

Мне лично сложно оценить практическую ценность этого решения. Удобно ли оно реально не для абстрактного клиента, а конкретно для WSH? Надеюсь, kiber_punk не совсем пропал и что-нибудь скажет по этому поводу. Тема-то как-никак его. Попробовал почитать про эту Side-by-Side Assembly. Там этой мути хлебать не выхлебать, пока разберёшься. Ещё это Assembly постоянно сбивает мысли на ассемблер и путает вконец.

13

Re: WSH: Использование COM-сервера без его регистрации в системе

Эта фича была реализована microsoft'ом по сути то для более плавного перехода с архитектуры ActiveX/COM на .NET/Assembly. Работает примерно так. OS для запускаемого экзешника ищет *.manifest в начале в его ресурсах, если не находит смотрит в той же папке, где он лежит, и если не находит то действует как обычно. А если находит, то действует в соответствии с ним: загружает библиотеки, разрешает имена, и т.д. (в том числе и для activex). И только потом смотрит реестр, заголовки экзешника и т.д. Манифест соответственно имеет более высокий приоритет.

Особой значимой пользы я в этом не вижу, но удобно. Разве что для "унаследованного кода", что бы избежать использования реестра, или использовать разные реализаций одного компонента, или подменять компонент, который бы загружался через реестр, на свой. Отпадает необходимость следить за целостностью данных в реестре, и т. д.

Мне этот способ удобен тем, что нет необходимости регистрироваться/дерегистрироваться (либо копировать файлы в system32) на каждом компьютере на котором я запускаю свои скрипты (мне нравится jscript; они все у меня на флешке), проверять уже зарегистрированные, проверять версии, ... Всегда точно известно, что будет загружено. Хотя придётся, как в моём примере, таскать, помимо скриптов, ещё минимум 4 файла; пути запуска при перемещении скорее всего будут разные.

14

Re: WSH: Использование COM-сервера без его регистрации в системе

max7, спасибо. А какой-либо доступный пример приведёте? Можно на своих собственных разработках, хотя бы и той, что выше. Желательно с комментариями, чтобы можно было поместить в Коллекцию; т.е. разжевать, что есть «type="win32"»; почему, например, нужно два манифеста, а нельзя обойтись только одним — только для «dynwrapx.dll»; почему в первом нет «<file=… hash=…», а во втором есть; где брать «publicKeyToken» и т.п.

Осилите? Можно прямо здесь, а то, думаю, вопросы у меня ещё будут.

15

Re: WSH: Использование COM-сервера без его регистрации в системе

Возможно, хотя...
На какие-то вопросы, наверное, смогу ответить. Приведу цитату показывающий "откуда ноги растут", воспринимаем её с юмором, но с долей серьёзности.

Что за новый подкаталог WinSxS с dll-ками появился в каталоге Windows? Для чего он нужен?
WinSxS, или Windows Side by Side (бок о бок), является еще одним новшеством Windows XP. Microsoft, озаботившись криворукостью программистов, создала систему, позволяющую сохранять несколько версий одинаковых библиотек (DLL) и использовать при необходимости именно ту, что требует конкретная программа. Дело в том, что некоторые программы почему-то считают, что только они имеют нужную версию DLL, и перезаписывают при инсталляции даже более новую версию библиотеки, что может привести ко всякого рода неприятностям, поэтому, если какая-нибудь программа вздумает беспричинно заменить уже имеющуюся в системном каталоге DLL, операционная система поместит сомнительную библиотеку в специальную папку (WinSxS), а дурная программа так и останется уверенной, что сделала свое черное дело

В папках %WinDir%\WinSxS\Manifests и %WinDir%\WinSxS\Policies можно, в зависимости от количества установленного софта, любоваться манифестами и различными версиями одних и тех же библиотек.

Разжевать, что есть «type="win32"» я не буду (лень если честно). Об этом прямо и четко написано на сайте microsoft'а (и в google ;-).

Почему, например, нужно два манифеста. У них совершенно разная структура и задачи. В моём примере wscript.exe.manifest привязывается к  wscript.exe и описывает по сути, где брать инфу об указанных компонентах (учитываются все параметры). dynwrapx.sxs.manifest содержит описание непосредственно dynwrapx.dll («<file=… hash=…»), в том числе имена вроде progid="DynamicWrapperX", file name="dynwrapx.dll" и т.д.. Если изменить на progid="ABC", то будет работать код

   
var dx = new ActiveXObject("ABC");
var mystr = dx.Space(20,"x");
WScript.Echo(mystr + " : "+mystr.length);

publicKeyToken  нужен для идентификации и для работы с ключами и сертификатами и в данном контексте не интересен. Приведу цитату

В общедоступной сборке System.Drawing инструкция метаданных publickeytoken = (ВО 3F 5F 7F 11 D5 ОА ЗА) содержит лексему открытого ключа, представляющую собой самые младшие 8 байтов хэш-кода открытого ключа, который соответствует своему секретному ключу, принадлежащему автору сборки System.Drawing. Эта лексема открытого ключа не может фактически непосредственно использоваться для того, чтобы подтвердить подлинность автора сборки System.Drawing. Однако первоначальный открытый ключ, указанный в декларации System.Drawing может использоваться, чтобы математически проверить, что для того, чтобы подписать сборку System.Drawing в цифровой форме на самом деле использовался соответствующий секретный ключ. Поскольку Microsoft создала System.Drawing.dll, лексема открытого ключа, приведенная выше, принадлежит, несомненно, Microsoft.

16

Re: WSH: Использование COM-сервера без его регистрации в системе

Вот ещё для затравки текст 

WSO.sxs.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity
    type="win32"
    name="WSO.sxs"
    version="1.0.0.0" />

<file name="WSO.dll" hash="1d3220b1032c4e0ab3772aa21399c9db648cbde0" hashalg="SHA1">

    <comClass
        description="WindowSystemControl Class"
        clsid="{8E57EFA4-E91E-44FC-B69E-7A3BC1F5AB8D}"
        threadingModel="Both"
        progid="Scripting.WindowSystemControl"
        tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

    <comClass
        description="WindowSystemObject Class"
        clsid="{4CE85115-9B90-419F-9193-1C10C75E1383}"
        threadingModel="Both"
        progid="Scripting.WindowSystemObject"
        tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

    <typelib tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}"
        version="1.0"
        helpdir="V:\m7.core\jsb\kernel\" />

</file>

<comInterfaceExternalProxyStub
    name="IControlEvents"
    iid="{EE85ACDD-7499-4719-A173-FCC56CE6FA1D}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="IFormEvents"
    iid="{E83611E0-B0CD-4087-887B-4A0454176AA9}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="IActionEvents"
    iid="{EFCC7766-9D3D-48CE-94B0-F0EAC186B763}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="ITimerEvents"
    iid="{E00E8E3D-8933-4679-B250-257A46743389}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="IHeaderItemEvents"
    iid="{A71BDEAC-05C9-4594-854D-671071B3C110}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="IHeaderEvents"
    iid="{09D9EF1F-9DA1-4E05-9557-B3F692E5775B}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="IListViewEvents"
    iid="{A55B1FD3-30D4-479B-8F33-3978EB403A0B}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="ITreeViewEvents"
    iid="{FFC21772-F6D8-4AFC-A2F4-362C11DF0019}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="IRichEditEvents"
    iid="{B93AF23C-1D4E-48A4-9A5C-BC835FD0F39A}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="IFindReplaceDialogEvents"
    iid="{5CD2D30B-5F65-4529-9A7F-9DCAB56B5310}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="IFileOpenSaveDialogEvents"
    iid="{BAE2B02E-9BD5-4D6D-824E-197CC72CF040}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="ISelectFolderDialogEvents"
    iid="{C5A781AE-2868-4470-972D-39BEAE4721FC}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="ITrayIconEvents"
    iid="{0EE395DB-AF4D-4493-861E-B0E1966FD5DB}"
    proxyStubClsid32="{00020420-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

<comInterfaceExternalProxyStub
    name="IRegion"
    iid="{BB9FCB6F-2C14-4568-BADF-E7C0B022A654}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{40CC9252-A25A-4D28-A906-9BD3F752934A}" />

</assembly>

17

Re: WSH: Использование COM-сервера без его регистрации в системе

Вот ещё если кому интересно для http://www.assembla.com/wiki/show/litex LiteX Automation

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity
    type="win32"
    name="sqlite3.sxs"
    version="1.0.0.0" />

<file name="sqlite3.dll">

    <comClass
        description="LiteConnection Class"
        clsid="{3E22694D-7B92-42A1-89A7-668E2F7AA107}"
        threadingModel="Both" 
        progid="LiteX.LiteConnection"
        tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

    <comClass
        description="LiteStatement Class"
        clsid="{453A51CC-F944-4643-9540-A78253B8019C}"
        threadingModel="Both" 
        progid="LiteX.LiteStatement"
        tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

    <comClass
        description="LargeInteger Class"
        clsid="{25EE8E01-5237-41F1-B29F-6AF441CF0924}"
        threadingModel="Both" 
        progid="LiteX.LargeInteger"
        tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

<!--

    <comClass
        description="LiteRows Class"
        clsid="{5AD25519-5946-420F-B068-BCCC3856363D}"
        threadingModel="Both" 
        progid="LiteX.LiteRows"
        tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

    <comClass
        description="LiteColumns Class"
        clsid="{048DC1D9-E121-481C-8DFF-BC797993F2EC}"
        threadingModel="Both" 
        progid="LiteX.LiteColumns"
        tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

    <comClass
        description="LiteColumn Class"
        clsid="{10338227-2DC2-4A37-AF40-E5BF89FF4F10}"
        threadingModel="Both" 
        progid="LiteX.LiteColumn"
        tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

    <comClass
        description="LiteRow Class"
        clsid="{98FADC8F-1348-4EBD-B104-6D7CA93C8DEC}"
        threadingModel="Both" 
        progid="LiteX.LiteRow"
        tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

    <comClass
        description="LiteParameters Class"
        clsid="{7BAB4761-C1FA-458A-8993-F9667DF51F32}"
        threadingModel="Both" 
        progid="LiteX.LiteParameters"
        tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

    <comClass
        description="LiteParameter Class"
        clsid="{0100C8E3-E467-4944-825D-7089A6EEC1B2}"
        threadingModel="Both" 
        progid="LiteX.LiteParameter"
        tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

-->

    <typelib tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
        version="1.0"
        helpdir="V:\m7.core\jsb\bin" />

</file>

<comInterfaceExternalProxyStub
    name="ILiteColumn"
    iid="{56B3DD01-7CE3-4590-BFD4-856DEC9E3E85}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    numMethods="9"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}" />

<comInterfaceExternalProxyStub
    name="ILargeInteger"
    iid="{5E575221-737A-443A-9D64-13B79512D287}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    numMethods="19" />

<comInterfaceExternalProxyStub
    name="ILiteRows"
    iid="{6A33FE52-8122-4494-A74A-9C7A04D637A4}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
    numMethods="10" />

<comInterfaceExternalProxyStub
    name="ILiteParameters"
    iid="{08B1A162-3DE5-47D4-9992-964281640F2F}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
    numMethods="11" />

<comInterfaceExternalProxyStub
    name="ILiteBusy"
    iid="{E3481F74-CB68-4D47-9F69-99D256089569}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
    numMethods="8" />

<comInterfaceExternalProxyStub
    name="ILiteProgress"
    iid="{E3481F74-CB68-4D47-9F69-99D256089570}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
    numMethods="8" />

<comInterfaceExternalProxyStub
    name="ILiteRow"
    iid="{7A107497-5F9C-45D6-994B-FB2F8E802E84}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
    numMethods="11" />

<comInterfaceExternalProxyStub
    name="ILiteStatement"
    iid="{AD13FFC0-BA5D-4B6C-ACBF-D1C44D0DA9B5}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
    numMethods="31" />

<comInterfaceExternalProxyStub
    name="ILiteConnection"
    iid="{7ADFDFCF-8B4E-42A2-B458-3CA6F2DB7FE4}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
    numMethods="21" />

<comInterfaceExternalProxyStub
    name="ILiteParameter"
    iid="{820D6CD0-98E2-496B-B01A-D3C4EB3F92C9}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
    numMethods="10" />

<comInterfaceExternalProxyStub
    name="ILiteColumns"
    iid="{4D4E89EB-4BCC-4647-8D0B-A6D7F627CA3D}"
    proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"
    baseInterface="{00000000-0000-0000-C000-000000000046}"
    tlbid="{10770BEB-5AFA-4851-B68E-EE891F3DEE7F}"
    numMethods="10" />

</assembly>

18

Re: WSH: Использование COM-сервера без его регистрации в системе

max7, Спасибо!
Но что-то я пока не разобрался.

19

Re: WSH: Использование COM-сервера без его регистрации в системе

Что не так?

20

Re: WSH: Использование COM-сервера без его регистрации в системе

Домашняя страница WSO.

21

Re: WSH: Использование COM-сервера без его регистрации в системе

max7, всё не так. Это:

В папках %WinDir%\WinSxS\Manifests и %WinDir%\WinSxS\Policies можно, в зависимости от количества установленного софта, любоваться манифестами и различными версиями одних и тех же библиотек.

Разжевать, что есть «type="win32"» я не буду (лень если честно). Об этом прямо и четко написано на сайте microsoft'а (и в google ;-).

извините, никуда не годится. Я же просил нечто наподобие: WSH: пишем сценарии в формате WSF или VBScript: простейший пример создания COM-сервера.

22

Re: WSH: Использование COM-сервера без его регистрации в системе

Это понятно. Написание полноценных статей - это работа на которую необходимо выделять время. На этом форуме присутствует весь необходимый материал и ссылки для её написания, в том числе в этом треде, в том числе в моих постах в нем. Если никто не хочет оформить это раньше меня - ждите. Вопрос я задал kiber_punk'у а не вам.

23

Re: WSH: Использование COM-сервера без его регистрации в системе

Не то, что никто не хочет — не знает. Коллега YMP упоминал, что касался этой темы. Я же — вообще ни сном, ни духом. Так что, буду благодарен, если Вы, по возможности, слепите подобную тему.

По поводу вопроса — я ответил, поскольку вполне могу подписаться под словами коллеги kiber_punk'а: мне так же непонятно.

24

Re: WSH: Использование COM-сервера без его регистрации в системе

Может быть проще огласить список вопросов? Не может же быть все непонятно? Скомпилированные ответы и будут содержанием темы для Коллекции.

25 (изменено: JSman, 2009-08-26 01:26:55)

Re: WSH: Использование COM-сервера без его регистрации в системе

Пользуясь случаем, хотел бы обратиться к собеседникам с просьбой дать рабочую ссылку на ( / прикрепить к теме, что лучше) regsvr42 — генератор манифестов.