Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RegisterComServer обратно / 10 сообщений из 10, страница 1 из 1
03.04.2018, 11:21
    #39624586
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
Как удалить регистрацию, выполненную ранее через RegisterComServer?
Только через regsvr32 /u?

DLL из состава стороннего ПО.
...
Рейтинг: 0 / 0
03.04.2018, 11:28
    #39624600
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
luigi,

Это самый штатный способ.
...
Рейтинг: 0 / 0
03.04.2018, 11:39
    #39624614
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
luigi,
Можешь реестр почистить если не устраивает нормальный способ.
...
Рейтинг: 0 / 0
03.04.2018, 12:06
    #39624642
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
Понял, спасибо.
...
Рейтинг: 0 / 0
03.04.2018, 12:31
    #39624671
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
Можно еще попробовать загрузить эту dll, через GetProcAdrress получить функцию DllUnregisterServer и вызвать ее напрямую, не забывая вызвать OleInitialize/OleUninitialize. Это эквивалентно вызову regsvr32 /u
...
Рейтинг: 0 / 0
03.04.2018, 14:45
    #39624880
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
luigi,

Так как жедаевские либы ставить всем традиционно лень. Хотя это, обычно, несколько кликов, то скопирую кусок из них:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
// UnregisterServer by Ralf Kaiser patterned on RegisterServer
function UnregisterServer(const ModuleName: string): Boolean;
type
  TCOMFunc = function: HRESULT;
const
  S_OK = $00000000;
var
  Handle: THandle;
  DllUnRegServ: TCOMFunc;
  DllCanUnloadNow: TCOMFunc;
begin
  Handle := LoadDLL(ModuleName);
  try
    DllUnRegServ := GetProcAddress(Handle, 'DllUnregisterServer');
    DllCanUnloadNow := GetProcAddress(Handle, 'DllCanUnloadNow');
    Result := Assigned(DllCanUnloadNow) and (DllCanUnloadNow() = S_OK) and
      Assigned(DllUnRegServ) and (DllUnRegServ() = S_OK);
  finally
    FreeLibrary(Handle);
  end;
end;
...
Рейтинг: 0 / 0
03.04.2018, 14:56
    #39624907
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
makhaon
Код: pascal
1.
Handle := LoadDLL(ModuleName);

Нет проверки возвращаемого значения
makhaon
Код: pascal
1.
2.
    DllCanUnloadNow := GetProcAddress(Handle, 'DllCanUnloadNow');
    Result := Assigned(DllCanUnloadNow) and (DllCanUnloadNow() = S_OK) and

Зачем?
...
Рейтинг: 0 / 0
03.04.2018, 15:10
    #39624924
Aniskin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
DllCanUnloadNow может и отсутствовать в экспорте. В любом случае ее вызов бессмыслен. И для приличия добавить stdcall в TCOMFunc.
...
Рейтинг: 0 / 0
03.04.2018, 15:19
    #39624939
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
Nobody's perfect.

Но, господа, всё в ваших руках :)

https://github.com/project-jedi/jvcl/blob/master/jvcl/run/JvJCLUtils.pas
...
Рейтинг: 0 / 0
03.04.2018, 20:41
    #39625230
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegisterComServer обратно
Сделал так, как написал Aniskin.
Позаимствовал код из стандартного ComObj & ComServ.
Работает.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RegisterComServer обратно / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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