Viken Patel Ответов: 1

Как создать DCOM C# и vb6 DLL, которые можно использовать в качестве распределенных с другого компьютера


Я пытаюсь создать DCOM dll в c#, который я хочу использовать или вызвать функцию с другого компьютера, используя приложение c# и vb6

То же самое я хочу создать приложение с помощью VB6 и хочу вызвать приложение .net с другого, а также с того же компьютера.

Что я уже пробовал:

Я хочу создать образец приложения с помощью .NET, а также в VB6, и я хочу использовать эти DLL приложения с другого компьютера, я прошел через несколько шагов, но это сбивает с толку и до сих пор не могу найти точный рабочий пример.

Я создал один пример проекта библиотеки классов и подписал его ключом, импортированным следующей командой:

sn.exe -i C:\Test\D\test.snk testD


а на пост-сборке я импортирую файл tlb из следующей команды:
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\RegAsm /codebase "$(TargetPath)" /tlb:"$(TargetDir)$(TargetName).lib"


Теперь я могу успешно построить проект после обновления кода в AssemblyInfo.cs следующим образом:

[assembly: ApplicationName("D")] // name space name
[assembly: ApplicationActivation(ActivationOption.Library)]
[assembly: AssemblyKeyFile("test.snk")] // exported key name.


Теперь у меня есть два файла, один dll и один lib-файл в папке bin, когда я строю проект.

Лук я не знаю, что делать. Как я могу получить доступ с другого компьютера и как я могу создать то же самое для VB6.

Структура моего проекта выглядит следующим образом
структура проекта

я хочу создать приложение, которое может быть установлено на разных компьютерах и может общаться друг с другом по сети

может ли кто-нибудь помочь мне с шагами, как я могу создать приложение, а также как я могу создать настройку для того же самого ?

я загрузил исходный код , я могу создать устанавливаемый конфиг, но не могу позвонить с другого компьютера

и это ниже моего клиентского кода со ссылкой
https://www.c-sharpcorner.com/uploadfile/yougerthen/create-dcom-application-from-within-net-environment-part-v/

RemoteSessionContextType тип = тип.GetTypeFromProgID("D. Person", "100.10.51.57", true);
var dcomObject = активатор.CreateInstance(remotesessioncontextype);
версия строки = dcomObject.Метод toString();
Приставка.WriteLine(версия);

я получаю ошибку, как показано ниже.

etrieving фабрика класса COM для компонента с CLSID {000209FF-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80070005 Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)).

F-ES Sitecore

Вы должны реализовать COM, Если хотите, чтобы он использовался VB6. Google how to create a COM object in c#, и вы найдете множество пошаговых инструкций по всем шагам.

Viken Patel

да , но я хочу создать dll, которая может быть вызвана с другой машины, и я ищу это решение, если я создаю dll в компьютере A с помощью приложения vb6 или c#, которое может быть вызвано с компьютера B.

F-ES Sitecore

Если вы создадите его как COM-объект, вы можете зарегистрировать его как DCOM-объект на клиентской машине, что позволит создать объект на другом компьютере.