使RDS.Dataspace对象与Windows 10一起使用

问题描述 投票:0回答:2

是否可以让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':对象'〜'的方法'〜'失败

我已尝试(但不限于)以下列表中的内容......

  1. 添加三个dll(msadcf.dll,msadcfr.dll,msadcs.dll)到C:\Program Files (x86)\Common Files\system\msadc\目录,因为它们不存在。
  2. 取消注册,然后使用regsvr32注册#1中的文件。
  3. 将这些文件(handler.reg,handsafe.reg)找到的两个注册表文件添加到注册表中。
  4. 尽可能禁用DEP。
  5. 在组件服务中禁用“对此应用程序执行访问检查”。在应用程序属性区域中找到。
  6. 将标识设置为我的普通用户帐户(Domain Admin),并尝试将用户设置为我使用本地管理员权限创建的新帐户。
  7. 尝试在没有运行IIS的情况下使用“\ 127.0.0.1”并尝试在运行IIS时使用“http://127.0.0.1”。
  8. 在我的桌子上敲打我的头。
  9. 将密钥(MyComName.MyClassMod)添加到注册表中的Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLaunch\密钥以注册COM对象。
  10. 使用Procmon.exe来追踪问题。
  11. 禁用Windows防火墙。
  12. 检查事件查看器以获取有用的任何信息。

我只是不能让这个旧东西工作!有没有人在Windows 10上运行COM对象?如果是这样,请告诉我我做错了什么!

这个问题不像What does "Method '~' of object '~' failed" mean?问题。它标有答案,但答案无法解决此问题。我正在使用EXACT相同的dll,exe,ocx等文件。这与错误配置或缺少的东西有关。我只是不知道它是哪一个。

windows dll com vb6
2个回答
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

基本上,你无法创建对象,因为你的对象实际上不再存在了。


0
投票

就像K.Davis在他的回答中所说,MSADC不再支持Windows。因此,让我的旧软件在Windows 10上运行的目标很简单,我只需要像以前版本的Windows一样添加MSADC。

这可能不是每个人都想做的事情,但我现在做了很多次,并且没有任何问题。

我必须从Windows 10中丢失的旧操作系统(我认为它是Windows 7)中提取了一些文件。我已经包含它们以及安装脚本(install.bat)以在Windows 10上安装MSADC。

我用所有相关文件制作的安装程序可以从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.
© www.soinside.com 2019 - 2024. All rights reserved.