Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Как узнать из Bat-ника версию *.DLL, *.ax и т.п.

Ответить
Настройки темы
Любой язык - Как узнать из Bat-ника версию *.DLL, *.ax и т.п.

Старожил


Сообщения: 251
Благодарности: 22

Профиль | Отправить PM | Цитировать


Народ, есть ли какиенить консольные тулзы позволяющие узнать версию *.dll,*.ax и т.п. ?
Например, есть зарегестрированный divxdec.ax .
1. Как узнать из батника Путь\divxdec.ax ?
2. Как узнать версию divxdec.ax ?
Хочу написать батничек, регистрирущий и копирующий в %SystemRoot%\system32 библилотеки в случае их отсутствия, иначе необходимо сравнивать версии зарегистрированной и устанавливаемой библиотек и т.д.
Возможо ли такое ?

Отправлено: 16:45, 28-08-2007

 

Старожил


Сообщения: 251
Благодарности: 22

Профиль | Отправить PM | Цитировать


По поводу версии файла один из вариантов: filever.exe /v %systemroot%\\system32\divxdeс.ax
А вот как узнать путь к зарегестрированной библиотеке ?
З.Ы. filever.exe расположен: Дистрибутив Хрюши\SUPPORT\TOOLS\SUPPORT.CAB

Отправлено: 17:07, 28-08-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1560

Профиль | Отправить PM | Цитировать


Цитата Dilinjer:
как узнать путь к зарегестрированной библиотеке ?
Код: Выделить весь код
@echo off

SET LIB_NAME=acelpdec.ax
For /F "tokens=3" %%i In ('REG QUERY HKCR\CLSID /S^|findstr /IEC:"\\%LIB_NAME%"') Do SET LIB_PATH=%%i
Echo %LIB_PATH%
к сожалению, поиск в реестре занимает приличное время... для быстрого нахождения пути нужно знать GUID, а для нахождения GUID нужно знать путь... замкнутый круг однако
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:57, 29-08-2007 | #3


Старожил


Сообщения: 251
Благодарности: 22

Профиль | Отправить PM | Цитировать


amel27, я дико извеняюсь если задаю глупые вопросы, но как винда подгружает(находит) определенную библиотеку ?
Например, я кликаю мышью на фильм.avi (закодированный при помощи DivX), загружаеться плеер и декодеры(зарегестрированные библиотеки) звука и изображения (divxdec.ax), т.е. мот кто разъяснит как все это происходит ?
И еще, как тогда с помощь батничка из библиотеки GUID выцепить ?
У разных версий divxdec.ax (либо какихто других библиотек разных версий) GUID одинаковый или разный?
И еще проблема divxdec.ax может назвываться, например: divxd.ax ,т.е. отличаться от внутреннего имени файла, тогда ваш вариант не поможет (:

Последний раз редактировалось Dilinjer, 29-08-2007 в 12:06.


Отправлено: 11:51, 29-08-2007 | #4


Ветеран


Сообщения: 2972
Благодарности: 624

Профиль | Отправить PM | Цитировать


Цитата Dilinjer:
Хочу написать батничек, регистрирущий и копирующий в %SystemRoot%\system32 библилотеки
Как показал amel27 написание подобных bat'ников весьма нетривиально. Ко всему прочему ряд консольных утилит windows не работает со стандартными потоками, т.е. бывает попросту невозможно организовать перенаправление вывода.
Для этих задач гораздо больше подходит WSH (Windows Script Host).

Отправлено: 12:15, 29-08-2007 | #5


Старожил


Сообщения: 251
Благодарности: 22

Профиль | Отправить PM | Цитировать


Должна же быть консольная тулза, читающая GUID из библиотеки ! Если ее найти, то проблем с написанием моего батничка невозникнет....
Busla, WSH изучать ради простейшей задачи - некатит Хотя знание WSH - весч нужная !

Отправлено: 12:25, 29-08-2007 | #6


Googler


Сообщения: 3665
Благодарности: 1560

Профиль | Отправить PM | Цитировать


Dilinjer
Во-первых, на один файл может быть несколько GUID... Во вторых, путь не существует отдельно от имени, отсюда и проблема - без перебора все равно не обойтись, а перевести GUID в путь и обратно можно кучей способов, например через WMI.
Цитата Dilinjer:
как винда подгружает(находит) определенную библиотеку ?
расширение --> класс (GUID) --> путь - все в ветке HKCR
Цитата Dilinjer:
divxdec.ax может назвываться, например: divxd.ax ,т.е. отличаться от внутреннего имени файла
не понял, "путь" он и есть "путь": http://msdn2.microsoft.com/en-us/library/ms682390.aspx

З.Ы. Проблема может быть в другом - некоторые системные библиотеки не включают полный путь для \System32, например ole32.dll, для учета этой возможности придется немного усложнить батник.

Отправлено: 12:45, 29-08-2007 | #7


Старожил


Сообщения: 251
Благодарности: 22

Профиль | Отправить PM | Цитировать


Цитата amel27:
расширение --> класс (GUID) --> путь - все в ветке HKCR
Цитата Dilinjer:divxdec.ax может назвываться, например: divxd.ax ,т.е. отличаться от внутреннего имени файла
не понял, "путь" он и есть "путь": http://msdn2.microsoft.com/en-us/library/ms682390.aspx
Я имел ввиду след. например: Есть зарегистрированная библиотека (декодер DivX) C:\program files\123\123.ax(тоист взяли тупо еге переименовали с divxdec.ax в 123.ax) , я незнаю(точнее bat'ник) не имени не месторосположения данной библиотеки. Имею в наличии divxdec.ax последней версии.
Так вот bat'нику надо узнать путь и имя этой библиотеки для сравнения версий и в случае наличия свежей деинсталяции старой и установки новой библиотеки?

Отправлено: 13:02, 29-08-2007 | #8


Googler


Сообщения: 3665
Благодарности: 1560

Профиль | Отправить PM | Цитировать


Цитата Dilinjer:
взяли тупо еге переименовали с divxdec.ax в 123.ax
В таком случае я вижу только два варианта - либо сравнивать библиотеки по GUID, либо по внутреннему имени... Первый хорош для DLL/OCX но не подходит для AX-файлов (они не имеют TLB-блока), поэтому остается только второй. К сожалению мне неизвестны CMD-утилиты, читающие эту инфу из файлов (есть старая, но она не понимает юникодовых тегов)... разве только через API пытаться.

Отправлено: 11:17, 30-08-2007 | #9


Старожил


Сообщения: 251
Благодарности: 22

Профиль | Отправить PM | Цитировать


Цитата amel27:
читающие эту инфу из файлов (есть старая, но она не понимает юникодовых тегов)...
Это Вы про filever.exe или есть еще какието CMD-шные тулзы?
А вообще для незаригистрированных DLL/OCX какой прогой CMD/GUI можно узнать GUID(GUID'ы) класса(классов) ?

З.Ы. Кстати, немного покопав реестр, решил что в ветви HKEY_CLASSES_ROOT\CLSID хранятся не GUID-ы зарегистрированных библиотек а GUID-ы классов зарегистрированных библиотек. Сами GUID-ы зарегистрированных библиотек храняться в в ветви HKEY_CLASSES_ROOT\TypeLib, но если библиотека имеет один класс то упоминание о ней в HKEY_CLASSES_ROOT\TypeLib отсутствует. Ктолибо могет подтвердить или опровергнуть сие ?

Отправлено: 13:10, 30-08-2007 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Как узнать из Bat-ника версию *.DLL, *.ax и т.п.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как узнать версию FireWall AlpCRAZY Сетевые технологии 1 01-11-2004 19:07
Как узнать версию Windows Diesel Сетевые технологии 3 14-05-2004 10:39
Как узнать из BAT-ника расположение рабочего стола Guest Microsoft Windows 95/98/Me 9 01-11-2003 05:49
Как узнать версию броузера? MikePr Вебмастеру 1 28-11-2002 15:31




 
Переход