Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регистрация библиотеки COM 
V
    Опции темы
AnalogXP
Дата 26.4.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 23.9.2007

Репутация: нет
Всего: нет



Здравствуйте!

С своей программе использую стороннюю библиотеку которую необходимо регистрировать. С регистрацией не проблема - regsvr32.exe /s Biblia.dll - под админом. А вот как регистрировать библиотеку в портативной программе (без инсталятора) и без прав админа (под ограниченой учетной записью)? 
PM MAIL   Вверх
cemick
Дата 27.4.2010, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 6



Цитата(AnalogXP @ 26.4.2010,  15:43)
Здравствуйте!

С своей программе использую стороннюю библиотеку которую необходимо регистрировать. С регистрацией не проблема - regsvr32.exe /s Biblia.dll - под админом. А вот как регистрировать библиотеку в портативной программе (без инсталятора) и без прав админа (под ограниченой учетной записью)?

Мне кажется ваш вопрос подразумевает ответ. Никак. Разве вы не замечали что очень часто установить программу можно только с правами администратора. А без инсталятора можно зарегестрировать вот так
Код

function RegisterServer(const aDllFileName: string; aRegister: Boolean): Boolean;
type
  TRegProc = function: HResult;
  stdcall;
const
  cRegFuncNameArr: array [Boolean] of PChar =
    ('DllUnregisterServer', 'DllRegisterServer');
var 
  vLibHandle: THandle;
  vRegProc: TRegProc;
begin
  Result := False;
  vLibHandle := LoadLibrary(PChar(aDllFileName)); 
  if vLibHandle = 0 then Exit; 
    @vRegProc := GetProcAddress(vLibHandle, cRegFuncNameArr[aRegister]);
  if @vRegProc <> nil then 
    Result := vRegProc = S_OK;
end;

PM MAIL WWW   Вверх
AnalogXP
Дата 27.4.2010, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 23.9.2007

Репутация: нет
Всего: нет



cemick, вот что я нашел здесь. И это работает, но только под XP. Под Win7 не получается. Вам спасибо, попробую и Ваш вариант.
PM MAIL   Вверх
cemick
Дата 27.4.2010, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 6



Цитата(AnalogXP @  27.4.2010,  11:00 Найти цитируемый пост)
вот что я нашел здесь

Э-э, вообщем мужики сомневаются. Там видать манифест - чисто дот нешная приблуда. 
Если действительно есть способ заюзать COM без регистрации(сильно сомневаюсь) в реестре отпишитесь. 
PM MAIL WWW   Вверх
AnalogXP
Дата 27.4.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 23.9.2007

Репутация: нет
Всего: нет



cemick, так я же говорил - работает.
Вот еще: http://msdn.microsoft.com/ru-ru/library/x6...v=VS.90%29.aspx

Я сделал два файла манифеста для программы и библиотеки. Запускал под XP ( ограниченная учетная запись ), поиском прошелся по реестру до и во время работы. GUID не найдет. 
Вот бы еще с Вистой/7 разобратся.

PM MAIL   Вверх
cemick
Дата 28.4.2010, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 6



Цитата(AnalogXP @  27.4.2010,  15:23 Найти цитируемый пост)
cemick, так я же говорил - работает.
Вот еще: http://msdn.microsoft.com/ru-ru/library/x6...v=VS.90%29.aspx

Я сделал два файла манифеста для программы и библиотеки. Запускал под XP ( ограниченная учетная запись ), поиском прошелся по реестру до и во время работы. GUID не найдет. 
Вот бы еще с Вистой/7 разобратся.


А можете привести пример ваших манифестов?
PM MAIL WWW   Вверх
AnalogXP
Дата 28.4.2010, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 23.9.2007

Репутация: нет
Всего: нет



Манифест библиотеки (Имя файла манифеста - HtmlSnap2.dll.manifest):
Код

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity type="win32" name="HtmlSnap2.dll" version="2.1.2009.1101" />
  <file name="HtmlSnap2.dll">
     <typelib
        tlbid="{144732A7-D135-46DB-B271-72EFC74418FE}"
        version="1.0"
        helpdir=""/>
     <comClass 
       clsid="{ADF55FB4-E4A0-47C8-A7B4-89C7328A9AB5}" />
  </file>
</assembly>

Библиотеку взял с данного сайта.  ПРОШУ ПРОШЕНИЯ - ССЫЛКУ ИСПРАВИЛ

Манифест программы (Имя файла манифеста - MyProgram.exe.manifest):
Код

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity type="win32" name="MyProgram.exe" version="1.0.0.0" />
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="HtmlSnap2.dll" version="2.1.2009.1101" />
    </dependentAssembly>
  </dependency>
</assembly>




Это сообщение отредактировал(а) AnalogXP - 3.5.2010, 00:34
PM MAIL   Вверх
AnalogXP
Дата 1.5.2010, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 23.9.2007

Репутация: нет
Всего: нет



В общем под Window 7 я сделал так:
Создал батник с содержимым - regsvr32.exe /s "путь к HtmlSnap2.dll"
Запускаю при создании формы.
Код

if IsWindowsVista then
     ShellExecute(Handle, 'runas', PChar( IncludeTrailingPathDelimiter( ExtractFilePath(Application.ExeName) )+'RegHTML.bat' ), nil, nil, SW_HIDE);


Но все время при запуске появляется такое окно:
user posted image
При закрытии программы отменяю регистрацию библиотеки (программа портативная).

Как от этого окна избавиться? Или может есть другой какой вариант регистрации под Висту и Семерку? Можно ли запустить ShellExecute из под Юзера с правами администратора? 
PM MAIL   Вверх
AnalogXP
Дата 3.5.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 23.9.2007

Репутация: нет
Всего: нет



Разобрался. Проблема в том, что я использовал два манифеста (тот что модуль (ресурс) и тот что файл). Из за этого, используется только манифест из файла - из ресурса игнорируется. Убрал модуль из USES и добавил необходимое в файл MyProgram.exe.manifest:
Код

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

  <assemblyIdentity
    type="win32"
    name="MyProgram"
    version="1.0.0.0"
    processorArchitecture="*"/>
  
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="HtmlSnap2.dll" version="2.1.2009.1101" />
    </dependentAssembly>
  </dependency>

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

  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>

</assembly>


Теперь работает и в XP, и в Семерке.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.