Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь в регистрации длл в 7 винде, не работает код под 7 виндой 
:(
    Опции темы
hyp1k
Дата 2.11.2010, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Прочитал статью как написать тулбар для интернет эксплорера. Написал тулбар аналогичным способом. Встала проблема написать инсталлер этого тулбара. 

Когда под рукой имеется sdk для установки используются утилиты gacutil и regasm. У клиента на машине, естественно, sdk нету. Поэтому установить эти длл я решил, использовав код:
Код

            Publish objPub = new Publish();
            string sP = Application.StartupPath;
            try
            {                
                objPub.GacInstall(sP + "\\Lib\\BandObjectLib.dll");
                objPub.GacInstall(sP + "\\Lib\\Interop.SHDocVw.dll");
                objPub.GacInstall(sP + "\\Lib\\SampleBars.dll");
                objPub.RegisterAssembly(sP + "\\Lib\\SampleBars.dll");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
                this.Close();
            }


Под хр работает идеально. Под 7 виндой даже запуская от имени администратора появляется ошибка:
Отказано в доступе к разделу реестра HKEY_CLASSES_ROOT\CLSID\{тут много циферок через тире}.
Т.е. GacInstall выполняются нормально, а RegisterAssembly вываливает ошибку. Отключение UAC не помогло.

Как победить это?

Ссылка на прочитанную статью:
Как сделать тулбар для ИЕ

Вот какой по идее что нужно выполнить, но не используя sdk:
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\gacutil" /if BandObjectLib.dll
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\gacutil" /if Interop.SHDocVw.dll
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\gacutil" /if SampleBars.dll
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm" SampleBars.dll

Можно, конечно, написать                 
Код

object com = "\"C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\RegAsm\" " + sP + "\\Lib\\SampleBars.dll";
ExecuteCommandSync(com);

но хочется воспользоваться
Код

objPub.RegisterAssembly(sP + "\\Lib\\SampleBars.dll");




Это сообщение отредактировал(а) hyp1k - 2.11.2010, 23:48
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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