Batch file Can';t从其他文件夹访问midiox COM接口

Batch file Can';t从其他文件夹访问midiox COM接口,batch-file,com,wsh,Batch File,Com,Wsh,我有一个使用midiox COM接口的脚本,当它位于midiox安装路径中的“WSH”文件夹中时工作正常,但当我将该脚本移动到文档中的某个文件夹(以便将其添加到同步文件中)时,突然发现我无法再访问COM接口,因为获得了mox变量(主midiox对象)现在导致错误: Could not create object named "Midiox.MoxScript.1". 这是指脚本中的这一行: var mox = WScript.CreateObject("Midiox.MoxScript.1")

我有一个使用midiox COM接口的脚本,当它位于midiox安装路径中的“WSH”文件夹中时工作正常,但当我将该脚本移动到文档中的某个文件夹(以便将其添加到同步文件中)时,突然发现我无法再访问COM接口,因为获得了
mox
变量(主midiox对象)现在导致错误:

Could not create object named "Midiox.MoxScript.1".
这是指脚本中的这一行:

var mox = WScript.CreateObject("Midiox.MoxScript.1");
我尝试将所有文件从midiox安装路径复制到我的文档中(保持相同的文件夹结构),但仍然出现此错误

编辑15-01-14:

为了消除由于未在32位模式下运行cmd prompt或cscript.exe而导致此问题的可能性,我对批处理文件进行了如下编辑:

@echo off
set "SystemPath=%windir%\sysWOW64"
ECHO inside LAUNCHPAD_Polling_14-09-14
ECHO.
:RELOAD_SCRIPT
C:\Windows\SysWOW64\cscript.exe C:\Users\Chris\Documents\MEGA\repos\LP_DJM_Script\LAUNCHPAD_Polling_14-09-14.js
ECHO.
ECHO.
:PROMPT
set /p UserInput= Press "Enter" to reload. ("n" to exit)
IF "%UserInput%"=="n" (
    GOTO :EXIT
) Else (
    GOTO :RELOAD_SCRIPT
)
:EXIT

我仍然会遇到同样的错误。

据我所知,该组件是一个32位进程内组件,需要运行32位应用程序才能创建它的实例

您正在运行cscript.exe的64位版本(C:\Windows\System32\cscript.exe),而不是32位版本(C:\Windows\SysWOW64\cscript.exe)


如果您是从cmd.exe运行的,则运行的cscript.exe(不提供完整路径)是您正在运行的cmd.exe的一个位。因此,如果您是从批处理文件执行脚本,您可以改为运行32位版本的cmd.exe。

我知道了。我已将cscript.exe的副本放在脚本文件夹中,并将其设置为“以管理员身份运行”,因为当从system32目录调用cscript时,我不知道如何让它以管理员身份运行。但当我将所有文件复制到另一个目录时,cscript.exe的副本没有自动设置为“以管理员身份运行”"-它拒绝我访问midiox COM接口。

请注意,您对%SYSTEMPATH%的更改几乎是无害的,因为在没有完整路径的情况下调用cscript.exe时,最重要的是%path%。无论如何,我重新阅读了您的问题,它似乎只与当前路径有关,而与处理比特数无关,除非您没有提供足够的详细信息我设置路径的原因是尝试运行32位版本的cmd…老实说,我不确定我是否完成了(以防会有任何影响)。是的,当前路径似乎对该脚本做了一些事情…idk什么。为什么该变量可以在位于程序文件(x86)中的文件夹中访问但不在我的文档中?我感谢您迄今为止的帮助,谢谢。您必须预先启动正确的cmd.exe,设置环境变量不会更改您正在运行的版本。无论如何,我认为您需要联系组件的作者或维护人员来帮您完成此工作。是的,我已经联系了作者,但他们还没有回复me:\我想可能熟悉COM的人可以很快解释这一点,但可能是组件特定的?我试图准确地找到如何设置批处理文件运行的cmd.exe,并且设置路径似乎是正确的方法…我会寻找其他方法,以便排除这种情况。感谢您的帮助。如果您使用的是64位客户端然后仍然可以加载32位COM对象?(Windows将在另一个进程中为其创建32位单元,然后进行跨单元通信)。为什么你有一个cscript.exe的副本?这样我就可以将它设置为以管理员身份运行。。似乎比试图找出如何让windows执行它更容易…但我可能错了。你也可以创建一个以管理员身份运行的C:\windows\SysWOW64\cmd.exe-C的浏览器快捷方式。当你单击快捷方式的“Advanced…”按钮。它的子进程(如cscript.exe)将使用相同的凭据运行,因此您不必设置为以管理员身份作为兼容性填充程序运行。顺便说一句,下一票不是我的。