Rumata пишет:Невозможно создание объекта контейнером ActiveX: 'ScriptControl'
решается так:
%windir%\SysWOW64\cscript.exe имя-vbs-файла
Понимаю, что вопрос многократно обсуждался, но добавлю пару слов. Я нахожу размещение проверки архитектуры в коде скрипта более универсальным решением - он заработает даже у тех, кто не знает о существовании папки SysWOW64. Например так:
CheckOSx86x64Args()
Rem основной код начинается здесь
Rem примеры некоторых ActiveX, не имеющих 64x реализации
Set SC = CreateObject("ScriptControl")
Set JRO = CreateObject("JRO.JetEngine")
Set DAO = CreateObject("DAO.DBEngine.36")
CreateObject("ADOX.Catalog").Create "Provider = Microsoft.Jet.OLEDB.4.0;Data Source='C:\test.mdb';"
CreateObject("ADODB.Connection").Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\test.mdb';"
Sub CheckOSx86x64Args()
Dim CmdLn, Arg
With CreateObject("WScript.Shell")
If Replace(LCase(WScript.Path), LCase(.ExpandEnvironmentStrings("%windir%\")), "") = "system32" Then
CmdLn = Replace(LCase(WScript.FullName), "system32", "syswow64")
If CreateObject("Scripting.FileSystemObject").FileExists(CmdLn) Then
CmdLn = CmdLn & " """ & WScript.ScriptFullName & """"
For Each Arg In WScript.Arguments
CmdLn = CmdLn & " """ & Arg & """"
Next
.Run CmdLn
WScript.Quit
End If
End If
End With
End Sub
alexii пишет:А кто-то говорил, что «ScriptControl идёт в комплекте даже с XP».
Скорее всего, проблема была в попытке запуска несуществующей x64 версии ScriptControl. А x32 ScriptControl вроде вполне себе нативен в Win.
Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251