Проверка работы COM-компоненты в 32/64 Windows

Я написал COM-компоненту на языке C# для .NET и захотел дать администратору возможность проверки, зарегистрирована компонента в системе или нет.

Сама компонента будет использоваться преимущественно в 1С, но администратор должен иметь инструмент проверки её работоспособности не в 1С. Т.е. я видел это так: администратор выполнил установку компоненты, запустил скрипт и компонента отчиталась что работает в 32 и 64 разрядных режимах запуска.

Разные режимы запуска нужны потому что 1С работает в разной разрядности — 32 и 64.

Честно скажу, пришлось слегка помучаться. Но код получился довольно простой.

Вот скрипт test_cch_dontrun.vbs на VBS:

Set Test = CreateObject("AddIn.AnvizCCH")
Dim wsh : Set wsh = CreateObject("WScript.Shell")
Dim bit : bit = wsh.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
 
Set objShell = WScript.CreateObject("WScript.Shell")
Set colSystemEnvVars = objShell.Environment("Process")
 
WSCript.Echo "System = " & colSystemEnvVars("PROCESSOR_ARCHITECTURE")
WScript.Echo WScript.FullName
 
MsgBox "System: " & bit & " Anviz CCH Version: " & Test.About 

Сначала я пробовал запускать этот скрипт из каталогов 32/64 Windows:

%WinDir%\System32\cscript.exe  "%~dp0test_cch_dontrun.vbs"
%WinDir%\sysWOW64\cscript.exe  "%~dp0test_cch_dontrun.vbs" 
pause

Но все время запускался 32-разрядный cscript.

Пришлось поискать и я нашел совет про каталог Sysnative.

Тогда я переписал скрипт таким образом:

%WinDir%\System32\cscript.exe  "%~dp0test_cch_dontrun.vbs"
%WinDir%\Sysnative\cscript.exe  "%~dp0test_cch_dontrun.vbs" 
pause

И на выходе получил проверку создания компоненты в 32 и 64 разрядном режиме запуска:

Вот такие тонкие нюансы встречаются при работе с различной разрядностью в Windows.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *