Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Реестр Windows / 24 сообщений из 24, страница 1 из 1
02.02.2019, 20:05
    #39768741
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
Приветствую всех!
На компе установлено две версии программы - полная и Runtime, соответственно в реестре имеется две ветки, Professional и Runtame.
Вопрос, как определить, что имеется только Professional или Runtame тоже.
...
Рейтинг: 0 / 0
02.02.2019, 20:13
    #39768745
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
А просто по именам папок проверить - не пойдет?
...
Рейтинг: 0 / 0
02.02.2019, 20:20
    #39768746
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
Расположение папок может быть произвольным, зависит от разрядности Виндовс и предпочтений установщика. :)
...
Рейтинг: 0 / 0
02.02.2019, 20:37
    #39768751
zimkon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
...
Рейтинг: 0 / 0
02.02.2019, 21:13
    #39768758
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
zimkon, спасибо!
Ищет хорошо, но долго.
...
Рейтинг: 0 / 0
02.02.2019, 22:41
    #39768782
zimkon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
xax_nvzimkon, спасибо!
Ищет хорошо, но долго.
https://nhutils.ru/forum/viewtopic.php?t=14
Попробуй переделать этот vbs скрипт на vba, и сравнить скорость с предыдущим вариантом
...
Рейтинг: 0 / 0
03.02.2019, 08:35
    #39768824
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
Дело в том, что в разделе SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ интересующей меня программы при "ручном просмотре" я не обнаружил, да и с преобразованием скрипта в vba у меня проблемы.
Меня вполне бы устроил первый вариант, если бы поиск происходил по конкретной ветке: HKEY_CURRENT_USER\Software\MapInfo\, но у самого тяму не хватает.
...
Рейтинг: 0 / 0
03.02.2019, 11:31
    #39768847
zimkon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
xax_nv,

Для анализа определенной ветки реестра второй вариант после некоторой доработки вполне бы подошел
...
Рейтинг: 0 / 0
03.02.2019, 11:51
    #39768853
zimkon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
xax_nv,

Подсказка, как проверить наличие определенной ветки реестра, тут
http://forum.oszone.net/post-2711088.html
...
Рейтинг: 0 / 0
03.02.2019, 14:55
    #39768908
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
zimkonxax_nv,

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

Использую вот такой код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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 на строке
Код: vbnet
1.
Set WshShell = WScript.CreateObject("WScript.Shell")

выдает ошибку: Object required

Что-то на старости лет совсе соображалка не работает, да и последнее время административная работа все время отнимает.
...
Рейтинг: 0 / 0
03.02.2019, 15:14
    #39768912
Swa111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
xax_nv,

в VBA так
Код: vbnet
1.
Set WshShell = CreateObject("WScript.Shell")
...
Рейтинг: 0 / 0
03.02.2019, 15:18
    #39768914
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
Swa111, большое спасибо!!!
...
Рейтинг: 0 / 0
04.02.2019, 09:40
    #39769073
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
А может проще запустить программу и посмотреть? В какой среде работаем: Access или Runtime Access?
...
Рейтинг: 0 / 0
04.02.2019, 16:09
    #39769302
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
Так речь идет не о версии Access, в Access нужно узнать версию MapInfo.
...
Рейтинг: 0 / 0
04.02.2019, 17:30
    #39769339
ldfanate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
а Мапинфо разве не предоставляет свои библиотеки объектов через OLE?
т.е. нельзя ли через createobject("mapinfo.application") извлечь проперти application.version и проанализировать? Наверняка у RT и Prof будет разное значение.
...
Рейтинг: 0 / 0
04.02.2019, 17:40
    #39769348
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
ldfanateчерез createobject("mapinfo.application")
В том то и дело, что при RT выдает ошибку, требуется CreateObject("Mapinfo.Runtame").
...
Рейтинг: 0 / 0
05.02.2019, 07:34
    #39769472
studieren
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
xax_nv,

Ну так добавьте "On Error Resume Next" перед CreateObject. Если ошибка, то почистите ошибку "Err.Clear", ну и потом второй вариант пробуете.
Не вариант?
...
Рейтинг: 0 / 0
05.02.2019, 09:58
    #39769506
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
xax_nvтребуется CreateObject("Mapinfo.Runtame").Объект создаётся?
...
Рейтинг: 0 / 0
05.02.2019, 10:00
    #39769510
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
Если создаётся, то как создаётся аналогичный объект для Professional?
...
Рейтинг: 0 / 0
05.02.2019, 16:22
    #39769739
ldfanate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
так гляньте в ветке реестра HKEY_CLASSES_ROOT - поищите там названия разделов *Mapinfo*, это и будет название для CreateObject.
...
Рейтинг: 0 / 0
06.02.2019, 04:00
    #39769902
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
ldfanateтак гляньте в ветке реестра HKEY_CLASSES_ROOT - поищите там названия разделов *Mapinfo*, это и будет название для CreateObject.Это мне? Если да, то у меня нет мапинфо, и не предвидится.
...
Рейтинг: 0 / 0
06.02.2019, 10:59
    #39769992
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
xax_nvНа компе установлено две версии программы - полная и Runtime, соответственно в реестре имеется две ветки, Professional и Runtame.
Вопрос, как определить, что имеется только Professional или Runtame тоже.
Посмотрел, что там и как...
http://foxclub.ru/articles/art48.php Запуск экземпляра MapInfo

После установки MapInfo Professional в реестре OC Windows регистрируется класс «MapInfo.Application», если вы используете MapInfo Runtime, то класс «MapInfo.Runtime».Отсюда
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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


тест
Код: vbnet
1.
2.
3.
4.
5.
6.
? IsOLEObjectInstalled("Word.Application")
True
? IsOLEObjectInstalled("MapInfo.Runtime")
False
? IsOLEObjectInstalled("MapInfo.Application")
False

Нет у меня MapInfo
...
Рейтинг: 0 / 0
06.02.2019, 16:49
    #39770287
ldfanate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
ПанургPrivate Declare Function CLSIDFromProgID Lib "ole32"
Придётся ветки if-esle городить для 64 и 32-битных систем.

А чем не нравится банальное двойное createobject обёрнутое в on error resume next ?
...
Рейтинг: 0 / 0
06.02.2019, 18:06
    #39770349
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реестр Windows
ldfanateПанургPrivate Declare Function CLSIDFromProgID Lib "ole32"
Придётся ветки if-esle городить для 64 и 32-битных систем.

А чем не нравится банальное двойное createobject обёрнутое в on error resume next ?ну тоже придётся городить проверки. А так то возможно не понадобится " городить для 64 и 32-битных систем" объявление функции - не будет 64-битного Access
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Реестр Windows / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]