Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Реестр Windows  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
Приветствую всех!
На компе установлено две версии программы - полная и Runtime, соответственно в реестре имеется две ветки, Professional и Runtame.
Вопрос, как определить, что имеется только Professional или Runtame тоже.

К сообщению приложен файл. Размер - 3Kb
2 фев 19, 20:05    [21800531]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 606
А просто по именам папок проверить - не пойдет?
2 фев 19, 20:13    [21800535]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
Расположение папок может быть произвольным, зависит от разрядности Виндовс и предпочтений установщика. :)
2 фев 19, 20:20    [21800536]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
zimkon
Member

Откуда: guest_rusimport
Сообщений: 110
xax_nv,

http://hiprog.com/index.php?option=com_content&task=view&id=463&Itemid=35
2 фев 19, 20:37    [21800541]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
zimkon, спасибо!
Ищет хорошо, но долго.
2 фев 19, 21:13    [21800548]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
zimkon
Member

Откуда: guest_rusimport
Сообщений: 110
xax_nv
zimkon, спасибо!
Ищет хорошо, но долго.

https://nhutils.ru/forum/viewtopic.php?t=14
Попробуй переделать этот vbs скрипт на vba, и сравнить скорость с предыдущим вариантом
2 фев 19, 22:41    [21800583]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
Дело в том, что в разделе SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ интересующей меня программы при "ручном просмотре" я не обнаружил, да и с преобразованием скрипта в vba у меня проблемы.
Меня вполне бы устроил первый вариант, если бы поиск происходил по конкретной ветке: HKEY_CURRENT_USER\Software\MapInfo\, но у самого тяму не хватает.
3 фев 19, 08:35    [21800679]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
zimkon
Member

Откуда: guest_rusimport
Сообщений: 110
xax_nv,

Для анализа определенной ветки реестра второй вариант после некоторой доработки вполне бы подошел
3 фев 19, 11:31    [21800707]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
zimkon
Member

Откуда: guest_rusimport
Сообщений: 110
xax_nv,

Подсказка, как проверить наличие определенной ветки реестра, тут
http://forum.oszone.net/post-2711088.html
3 фев 19, 11:51    [21800713]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
zimkon
xax_nv,

Подсказка, как проверить наличие определенной ветки реестра, тут
http://forum.oszone.net/post-2711088.html


Использую вот такой код:
Sub vvv()

Dim WshShell, MIP, MIR
'On Error Resume Next

Set WshShell = WScript.CreateObject("WScript.Shell")

MIP = WshShell.RegRead("HKCU\Software\MapInfo\MapInfo\Professional\")
MIR = WshShell.RegRead("HKCU\Software\MapInfo\MapInfo\RunTime\")
If Not VarType(MIP) = vbEmpty Then Debug.Print "MIP"
If Not VarType(MIR) = vbEmpty Then Debug.Print "MIR"

End Sub

При 'On Error Resume Next на строке
Set WshShell = WScript.CreateObject("WScript.Shell")
выдает ошибку: Object required

Что-то на старости лет совсе соображалка не работает, да и последнее время административная работа все время отнимает.
3 фев 19, 14:55    [21800785]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
Swa111
Member

Откуда:
Сообщений: 104
xax_nv,

в VBA так
Set WshShell = CreateObject("WScript.Shell")
3 фев 19, 15:14    [21800789]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
Swa111, большое спасибо!!!
3 фев 19, 15:18    [21800791]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 4908
А может проще запустить программу и посмотреть? В какой среде работаем: Access или Runtime Access?
4 фев 19, 09:40    [21801047]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
Так речь идет не о версии Access, в Access нужно узнать версию MapInfo.
4 фев 19, 16:09    [21801419]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
ldfanate
Member

Откуда:
Сообщений: 139
а Мапинфо разве не предоставляет свои библиотеки объектов через OLE?
т.е. нельзя ли через createobject("mapinfo.application") извлечь проперти application.version и проанализировать? Наверняка у RT и Prof будет разное значение.
4 фев 19, 17:30    [21801467]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
ldfanate
через createobject("mapinfo.application")

В том то и дело, что при RT выдает ошибку, требуется CreateObject("Mapinfo.Runtame").
4 фев 19, 17:40    [21801478]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2824
xax_nv,

Ну так добавьте "On Error Resume Next" перед CreateObject. Если ошибка, то почистите ошибку "Err.Clear", ну и потом второй вариант пробуете.
Не вариант?
5 фев 19, 07:34    [21801678]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4362
xax_nv
требуется CreateObject("Mapinfo.Runtame").
Объект создаётся?
5 фев 19, 09:58    [21801722]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4362
Если создаётся, то как создаётся аналогичный объект для Professional?
5 фев 19, 10:00    [21801727]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
ldfanate
Member

Откуда:
Сообщений: 139
так гляньте в ветке реестра HKEY_CLASSES_ROOT - поищите там названия разделов *Mapinfo*, это и будет название для CreateObject.
5 фев 19, 16:22    [21802041]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4362
ldfanate
так гляньте в ветке реестра HKEY_CLASSES_ROOT - поищите там названия разделов *Mapinfo*, это и будет название для CreateObject.
Это мне? Если да, то у меня нет мапинфо, и не предвидится.
6 фев 19, 04:00    [21802300]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4362
xax_nv
На компе установлено две версии программы - полная и Runtime, соответственно в реестре имеется две ветки, Professional и Runtame.
Вопрос, как определить, что имеется только Professional или Runtame тоже.

Посмотрел, что там и как...
http://foxclub.ru/articles/art48.php
Запуск экземпляра MapInfo

После установки MapInfo Professional в реестре OC Windows регистрируется класс «MapInfo.Application», если вы используете MapInfo Runtime, то класс «MapInfo.Runtime».
Отсюда
Private Type GUIDs
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0 To 7) As Byte
End Type

Private Declare Function CLSIDFromProgID Lib "ole32" (ByVal lpszProgID As Long, rclsid As GUIDs) As Long

Public Function IsOLEObjectInstalled(sName As String) As Boolean
Dim mGuid As GUIDs
'Ищем CLSID OLE-объекта
 IsOLEObjectInstalled = (CLSIDFromProgID(StrPtr(sName), mGuid) = 0)
End Function

тест
? IsOLEObjectInstalled("Word.Application")
True
? IsOLEObjectInstalled("MapInfo.Runtime")
False
? IsOLEObjectInstalled("MapInfo.Application")
False
Нет у меня MapInfo
6 фев 19, 10:59    [21802459]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
ldfanate
Member

Откуда:
Сообщений: 139
Панург
Private Declare Function CLSIDFromProgID Lib "ole32"

Придётся ветки if-esle городить для 64 и 32-битных систем.

А чем не нравится банальное двойное createobject обёрнутое в on error resume next ?
6 фев 19, 16:49    [21802887]     Ответить | Цитировать Сообщить модератору
 Re: Реестр Windows  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4362
ldfanate
Панург
Private Declare Function CLSIDFromProgID Lib "ole32"

Придётся ветки if-esle городить для 64 и 32-битных систем.

А чем не нравится банальное двойное createobject обёрнутое в on error resume next ?
ну тоже придётся городить проверки. А так то возможно не понадобится " городить для 64 и 32-битных систем" объявление функции - не будет 64-битного Access
6 фев 19, 18:06    [21802970]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить