2009-12-22 5 views
1

Может ли кто-нибудь мне помочь, как определить, установлен ли на компьютере какой-либо синтаксический анализатор MSXML. Я искал запись в реестре, но не смог ее получить. Я пишу приложение VB.NET. Заранее спасибоПрактическое руководство. Программно определить, установлен ли синтаксический анализатор MSXML (версия 3+) или нет.

ответ

0

Один из способов сделать это - создать экземпляр одного из объектов MSXML в коде. например

Dim t As Type 
Dim o As Object

' If this code causes an exception the object doesn't exist t = Type.GetTypeFromProgID("MSXML2.DOMDocument") o = Activator.CreateInstance(t); System.Runtime.InteropServices.Marshal.ReleaseComObject(o)

Я прошу прощения, если мой vb.net код плох :)

+0

ok.Пожалуйста, исправьте меня, если я ошибаюсь. Итак, вы хотите сказать, что если на моем компьютере установлена ​​какая-либо версия синтаксического анализатора MSXML, этот сегмент кода создаст экземпляр. Если на моем компьютере не установлен синтаксический анализатор MSXML, он не будет создавать экземпляр и выдаст исключение. –

+0

Да, в принципе, если в этом случае MSXML3 не установлен, вы получите исключение. Вы также можете выбрать различные прогиды для выбора определенных версий для тестирования. Вы могли бы просто искать прогиды в реестре (скажем, HKCR \ MSXML2.DOMDocument), но это не обязательно докажет правильность установки DLL. – tyranid

0

Я бы проверял, есть ли эти files exists и проверьте версию.

Или я хотел бы использовать this

Или, может быть, есть лучший способ?

+0

Спасибо за ответ. Вторая опция выглядит полезной, но я не понимаю, как ее использовать в приложении VB.NET. Я хочу выполнить это в фоновом режиме. –

0

Если возможно, укажите MSXML 3.0. Это included in all Windows operating systems starting with Win2k SP4, поэтому обычно нет необходимости проверять наличие.

В любом случае, если вы используете VB.NET, попробуйте вместо этого использовать System.Xml namespace. Это часть инфраструктуры .net, которая в любом случае необходима вашему приложению VB.NET.

+1

Microsoft рекомендует настроить MSXML6 по умолчанию, поскольку MSXML3 является предпочтительным резервом (это рекомендуемый совет в той записи блога, с которой вы связались). –

+0

@ Крис: Спасибо, что указали это! Я могу понять, что MS хочет, чтобы люди использовали новую библиотеку, но, лично, если я не нуждаюсь в каких-либо функциях MSXML6, я бы придерживался MSXML3, поскольку (a) MSXML6 не предварительно установлен на WinXP, (б) WinXP по-прежнему широко используется, и (c) это означает, что мне придется тестировать и поддерживать * дважды * код (как MSXML6, так и версию MSXML3). – Heinzi