是否可以让RDS.Dataspace对象(VB6 COM)在Windows 10上运行?
我在旧的vb6应用程序中有一些代码......
Set ds = CreateObject("RDS.DataSpace")
ds.InternetTimeout = 30000000
Set ComObj = ds.CreateObject("MyComName.MyClassMod", "\\127.0.0.1")
这在Windows 7计算机和Windows Server 2012 R2计算机上都能正常运行。但出于某种原因,当我试图在我的开发机器上运行它是一台Windows 10机器时,我通常会在最后一行得到以下错误之一......
运行时错误'4100':对象'IDataspace'的方法'CreateObject'失败
...或
运行时错误'4100':对象'〜'的方法'〜'失败
我已尝试(但不限于)以下列表中的内容......
C:\Program Files (x86)\Common Files\system\msadc\
,因为它们不存在。Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLaunch\
密钥以注册COM对象。Procmon.exe
来追踪问题。我只是不能让这个旧东西工作!有没有人在Windows 10上运行COM对象?如果是这样,请告诉我我做错了什么!
此问题与What does "Method '~' of object '~' failed" mean?
问题不同。它标有答案,但答案无法解决此问题。我正在使用EXACT相同的dll,exe,ocx等文件。这与错误配置或缺少的东西有关。我只是不知道它是哪一个。
答案 0 :(得分:0)
看来,在Windows 8之后进行一些互联网搜索时,Windows操作系统中不再包含DataSpace
对象。
来自https://docs.microsoft.com/...
从Windows 8和Windows Server 2012开始,Windows操作系统中不再包含RDS服务器组件(有关详细信息,请参阅Windows 8和Windows Server 2012 Compatibility Cookbook)。将来的Windows版本中将删除RDS客户端组件。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。使用RDS的应用程序应迁移到WCF Data Service。
基本上,你无法创建你的对象,因为你的对象实际上不再存在了。
答案 1 :(得分:0)
因此,就像K.Davis在回答中所说的那样,Windows不再支持MSADC。因此,使我的旧软件在Windows 10上运行的目标很简单,我只需要像以前的Windows版本一样重新添加MSADC。
这可能不是每个人都想做的,但是我已经做了很多次了,并且没有任何问题。
我不得不从Windows 10中丢失一些从较旧的操作系统(我认为是Windows 7)中提取的文件,我包括了它们以及安装脚本(install.bat),以便在Windows上安装MSADC。 10。
我使用所有相关文件制作的安装程序都可以从My Google Drive下载。
以上下载中的批处理脚本(install.bat)具有以下内容...
@ECHO OFF
CLS
SET "MSADCPATH=%COMMONPROGRAMFILES(X86)%\system\msadc"
ECHO Copying files to "%MSADCPATH%"...
copy /Y handler.reg "%MSADCPATH%"
copy /Y handsafe.reg "%MSADCPATH%"
copy /Y msadcf.dll "%MSADCPATH%"
copy /Y msadcfr.dll "%MSADCPATH%"
copy /Y msadcs.dll "%MSADCPATH%"
ECHO.
ECHO Importing registry entries...
REG import handler.reg
REG import handsafe.reg
ECHO.
ECHO Registering files...
ECHO registering msadcf.dll...
regsvr32 /s /u "%MSADCPATH%\msadcf.dll"
regsvr32 /s "%MSADCPATH%\msadcf.dll"
ECHO [done]
ECHO registering msadcfr.dll...
regsvr32 /s /u "%MSADCPATH%\msadcfr.dll"
regsvr32 /s "%MSADCPATH%\msadcfr.dll"
ECHO [done]
ECHO registering msadcs.dll...
regsvr32 /s /u "%MSADCPATH%\msadcs.dll"
regsvr32 /s "%MSADCPATH%\msadcs.dll"
ECHO [done]
ECHO registering msdfmap.dll...
regsvr32 /s /u "%MSADCPATH%\msdfmap.dll"
regsvr32 /s "%MSADCPATH%\msdfmap.dll"
ECHO [done]
ECHO.