Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 regsvr32 зависает при регистрации  [new]
evgen29
Member

Откуда:
Сообщений: 119
есть windows 7
написал для него dll в виде ActiveX Library в Delphi 7, которая включает один automation object из нескольких интерфейсов.

Пытаюсь его зарегистрировать. На некоторых машинах нормально регистрирует, а на одной зависает.
Просто виснет и ничего не говорит.
Компьютер в домене. Но другие тоже в домене, а на них регистрирует нормально.

regsvr32 mylib.dll

Добавлял
[b]function DllRegisterServer: HResult; stdcall;
begin
  Result := ERROR_SUCCESS;
end;

function DllUnregisterServer: HResult; stdcall;
begin
  Result := ERROR_SUCCESS;
end;
[/b]


но не помогло

основной код стандартен при создании Activex Library

library MyLib;

uses
  ComServ,
    Windows, SysUtils, Classes,
  MyLib_TLB in 'MyLib_TLB.pas',
  MainComUnit in 'MainComUnit.pas' {MyLibC: CoClass},
  HTTPClassUnit in 'classes\HTTPClassUnit.pas',
  IniClassUnit in 'classes\IniClassUnit.pas',
  InternetClassUnit in 'classes\InternetClassUnit.pas',
  CertsClassUnit in 'classes\CertsClassUnit.pas',
  CodecUnit in 'CodecUnit.pas',
  MyLibClassUnit in 'classes\MyLibClassUnit.pas',
  uLkJSON in 'uLkJSON.pas',
  LogUnit in 'LogUnit.pas';

exports
  DllGetClassObject,
  DllCanUnloadNow,
  DllRegisterServer,
  DllUnregisterServer;

{$R *.TLB}

{$R *.RES}

begin
end.
10 июл 19, 14:13    [21924190]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4805
evgen29,

фоновую службу RPC проверь
10 июл 19, 18:36    [21924376]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
evgen29
Member

Откуда:
Сообщений: 119
kealon(Ruslan)
evgen29,

фоновую службу RPC проверь


в смысле проверить работает или нет?
или как-то еще?
10 июл 19, 18:39    [21924378]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4805
evgen29,

ну хотя бы "запущена"
10 июл 19, 18:40    [21924380]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3260
антивирусы?
11 июл 19, 04:29    [21924487]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4805
makhaon
антивирусы?
скорее всего нет, корпоративная же сетка, одинаковые должны быть - на других бы тож самое было.
11 июл 19, 09:42    [21924552]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
alekcvp
Member

Откуда:
Сообщений: 1417
kealon(Ruslan),

А откуда идёт регистрация?
Если попробовать скопировать dll'ку в system32 (sysWOW64, если система x64, а dll - x86) и оттуда зарегистрировать?

Можно попробовать ProcessMonitor'ом посмотреть в какой момент зависает.
11 июл 19, 10:10    [21924588]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
evgen29
Member

Откуда:
Сообщений: 119
это странно
в журнале пишет на regsvr32 Код исключения: 0xc0000005
отказано в доступе или еще что?
система 64-х разрядная
запускаю cmd От имени админа со следующим текстом %windir%\syswow64\regsvr32 c:\path_to_mylib\mylib.dll
я вначале грешил на антивирус, но там его не оказалось. Поставил 360 total security. Тот ничего страшного не нашел.
Потом полез в журнал, а там это.
Комп в домене.
11 июл 19, 11:13    [21924659]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
vavan
Member

Откуда: Казань
Сообщений: 3308
evgen29
Код исключения: 0xc0000005
отказано в доступе или еще что?
AV
11 июл 19, 12:10    [21924747]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4805
evgen29,

судя по отсутствию реакции на фейловую подмену
function DllRegisterServer: HResult; stdcall;
begin
  Result := ERROR_SUCCESS;
end;


может путь path_to_mylib с пробелами?

%windir%\syswow64\regsvr32 "c:\path_to_mylib\mylib.dll"
11 июл 19, 12:26    [21924769]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
evgen29
Member

Откуда:
Сообщений: 119
kealon(Ruslan)
evgen29,

судя по отсутствию реакции на фейловую подмену
function DllRegisterServer: HResult; stdcall;
begin
  Result := ERROR_SUCCESS;
end;


может путь path_to_mylib с пробелами?

%windir%\syswow64\regsvr32 "c:\path_to_mylib\mylib.dll"


да вот в том то и дело, что путь без пробелов и даже без русских символов
тоже в бубен стучу и гадаю, в чем может быть дело...
11 июл 19, 16:50    [21925090]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
vavan
Member

Откуда: Казань
Сообщений: 3308
evgen29, выкинуть из длл все мясо, оставить совсем пустую обертку, регается ли? потом добавлять юниты, раз так найти гробящийся не удается
11 июл 19, 16:53    [21925093]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
evgen29
Member

Откуда:
Сообщений: 119
vavan
evgen29, выкинуть из длл все мясо, оставить совсем пустую обертку, регается ли? потом добавлять юниты, раз так найти гробящийся не удается


мясо почистил, пустая либа с ком-объектом регистрируется нормально.
Моя же выдает полностью это. Видимо проблема действительно в одном из модулей.
Там в некоторых модулях есть секции Initialization и finalization. в них к примеру логи создаются или идет подключение к ини.
Может доступа у библиотеки нет конечно к работе с файловой системой.
Буду искать дальше:

Имя сбойного приложения: regsvr32.exe, версия: 6.3.9600.17415, метка времени: 0x5450484f
Имя сбойного модуля: mylib.dll, версия: 1.0.0.0, метка времени: 0x2a425e19
Код исключения: 0xc0000005
Смещение ошибки: 0x00003762
Идентификатор сбойного процесса: 0x15fc
Время запуска сбойного приложения: 0x01d5389033672cd9
Путь сбойного приложения: C:\Windows\SysWOW64\regsvr32.exe
Путь сбойного модуля: d:\test\libs\mylib.dll
Идентификатор отчета: 71dd5908-a483-11e9-8253-80c5f23b1dde
Полное имя сбойного пакета: 
Код приложения, связанного со сбойным пакетом: 
12 июл 19, 12:20    [21925625]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
alekcvp
Member

Откуда:
Сообщений: 1417
evgen29
Код исключения: 0xc0000005
Смещение ошибки: 0x00003762



А если для библиотеки подробный map-файл создать и посмотреть, что за функция там по этому смещению?..
12 июл 19, 12:29    [21925632]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
vavan
Member

Откуда: Казань
Сообщений: 3308
evgen29
Там в некоторых модулях есть секции Initialization
вот где-то там по всей видимости и порылась gpf
12 июл 19, 12:35    [21925638]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 4805
evgen29,

значит инициализация либы
багрепортер какой нить подцепи, да LoadLibrary сделай и найдёшь
12 июл 19, 13:20    [21925682]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
evgen29
Member

Откуда:
Сообщений: 119
vavan
evgen29
Там в некоторых модулях есть секции Initialization
вот где-то там по всей видимости и порылась gpf


В общем, действительно, я сам дурак. У меня один модуль использует CadesCom для работы с сертификатами. А для него необходимо установить Cades Plugin. Инсталяха плагин автоматом не установила, соответственно при попытке создания объекта класса в секции initialize, который использует вызов
FStore := CreateOLEObject('CAdESCOM.Store');
в конструкторе , происходила бага, которая пыталась вызвать неустановленный на компьютер объект. А initialize загружается всегда при обращении к библиотеке. Установил плагин, всё заработало.

Вот так вот иногда полезно пообщаться на форуме. Спасибо )))
14 июл 19, 11:10    [21926351]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
alekcvp
Member

Откуда:
Сообщений: 1417
evgen29,

Вообще, такие вещи в Initialization делать ИМХО в принципе не стоит.
Ну или делать их с обработкой ошибок, записью в EventLog и возвратом правильного кода ошибки.
14 июл 19, 12:10    [21926365]     Ответить | Цитировать Сообщить модератору
 Re: regsvr32 зависает при регистрации  [new]
Василий 2
Member

Откуда:
Сообщений: 607
alekcvp
evgen29,

Вообще, такие вещи в Initialization делать ИМХО в принципе не стоит.

+1. Особенно в DLL. Мало того что ошибки трудно диагностируются, так еще и DLLMain без проблем позволяет применять только очень малый набор функций
15 июл 19, 09:59    [21926575]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить