powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Определить сборку как COM DLL и зарегать ее
9 сообщений из 9, страница 1 из 1
Определить сборку как COM DLL и зарегать ее
    #38906860
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно написать код, которой сканирует папку с файлами и регистрирует COM DLL сборки, если это действительно COM DLL а не обычные .NET DLL сборки. Вопрос как их отличить программно?
...
Рейтинг: 0 / 0
Определить сборку как COM DLL и зарегать ее
    #38906868
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регистрируй все, сделай соответствующую обработку ошибок.
...
Рейтинг: 0 / 0
Определить сборку как COM DLL и зарегать ее
    #38906886
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КРегистрируй все, сделай соответствующую обработку ошибок.

Тогда как зарегать COM DLL из кода C#, без вызова regasm? Чтобы не было этих дурацкий мелькающих консольных окон.
...
Рейтинг: 0 / 0
Определить сборку как COM DLL и зарегать ее
    #38906919
Вячеслав Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот механизм регистрации выдрал из рабочего куска, если чего то не хватает напиши, брошу что надо
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
        public String Register(String path, bool register)
        {

            String fileName = GetFileName(path);


            if (fileName==String.Empty)
            {
                return "Register ERROR! File not found: " + path;
            }

            //IntPtr hModuleDLL = Kernel32.LoadLibrary(path);
            int err;

            IntPtr hModuleDLL = Kernel32.LoadLibraryEx(path, IntPtr.Zero, 0);
            err = Kernel32.GetLastError();
            if (hModuleDLL == IntPtr.Zero)
            {
                return String.Format("Не могу загрузить: {0}.{1}", path,err.ToString());
            }


            IntPtr pExportedFunction = IntPtr.Zero;

            if (register)
            {
                pExportedFunction = Kernel32.GetProcAddress(hModuleDLL, "DllRegisterServer");
            }
            else
            {
                pExportedFunction = Kernel32.GetProcAddress(hModuleDLL, "DllUnregisterServer");
            }

            if (pExportedFunction == IntPtr.Zero)
            {
                return "Это не ActiveX.dll: " + path;
            }


            DllRegUnRegAPI pDelegateRegUnReg =
              (DllRegUnRegAPI)(Marshal.GetDelegateForFunctionPointer(pExportedFunction, typeof(DllRegUnRegAPI)))
              as DllRegUnRegAPI;


            UInt32 hResult = pDelegateRegUnReg();
            String result = String.Empty;

            if (hResult == 0)
            {
                if (register)
                {
                    result = "Registration " + fileName + " Successful.";
                }
                else
                {
                    result = "Unregistration " + fileName + " Successful.";
                }
            }
            else
            {
                result = String.Format("Error occurred : {0:X}. file: ", hResult, fileName);
            }

            Kernel32.FreeLibrary(hModuleDLL);
            hModuleDLL = IntPtr.Zero;

            return result;
        }
...
Рейтинг: 0 / 0
Определить сборку как COM DLL и зарегать ее
    #38906944
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Д,

твой код регистрирует нативные COM DLL, а мне нужно COM DLL сделанные в .NET, они вообще не эскпортируют DllRegisterServer/DllUnregisterServer
...
Рейтинг: 0 / 0
Определить сборку как COM DLL и зарегать ее
    #38906947
Вячеслав Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да согласен, регистрируется ActiveX dll и OCX
...
Рейтинг: 0 / 0
Определить сборку как COM DLL и зарегать ее
    #38906955
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltАлексей КРегистрируй все, сделай соответствующую обработку ошибок.

Тогда как зарегать COM DLL из кода C#, без вызова regasm? Чтобы не было этих дурацкий мелькающих консольных окон.
Мелькающих окон при вызове regasm может и не быть, если ставить свойство CreateNoWindow в ProcessStartInfo.
...
Рейтинг: 0 / 0
Определить сборку как COM DLL и зарегать ее
    #38906999
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, тогда еще вопрос. Допустим в папке свалены DLL скомпилированные для .NET 2.0, 3.5, 4.0
Как мне определить версию дотнета для каждой DLL, чтобы вызвать regasm нужной версии?
...
Рейтинг: 0 / 0
Определить сборку как COM DLL и зарегать ее
    #38907551
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt,

9405823
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Определить сборку как COM DLL и зарегать ее
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]