Проверка работы 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.
Свежие комментарии