C# 如何从x64打开32位OLEDB提示符

C# 如何从x64打开32位OLEDB提示符,c#,x86,64-bit,oledb,adodb,C#,X86,64 Bit,Oledb,Adodb,大家好, 我正在编写一个C#应用程序,允许用户动态设置他们想要连接的数据库(我会处理一些数据库数据之类的,但这并不重要)。重要的是,我允许我的用户使用下面的代码从OLEDB连接到数据存储 ADODB.Connection connection; MSDASC.DataLinks instance = new MSDASC.DataLinksClass(); if( (connection = instance.PromptNew() as ADODB.Connection) == null )

大家好,

我正在编写一个C#应用程序,允许用户动态设置他们想要连接的数据库(我会处理一些数据库数据之类的,但这并不重要)。重要的是,我允许我的用户使用下面的代码从OLEDB连接到数据存储

ADODB.Connection connection;
MSDASC.DataLinks instance = new MSDASC.DataLinksClass();
if( (connection = instance.PromptNew() as ADODB.Connection) == null ) return;
这将打开windows为*.udl文件打开的对话框,这正是我想要的。 然而,我遇到了一个有趣的问题,您的亮度可以派上用场:一些客户将不得不浏览x86驱动程序,而绝大多数客户肯定会使用x64

我知道您可以使用以下命令行打开x86 UDL文件: “C:\Windows\syswow64\rundll32.exe”“C:\Program Files(x86)\Common Files\System\Ole DB\oledb32.dll”,OpenDSL文件“C:\myConnectionFile.udl”

当默认(64位)命令为:

“C:\Program Files\Common Files\System\Ole DB\oledb32.dll”,OpenDSLFile“C:\myConnectionFile.udl”

换句话说:windows允许用户以两种方式创建条目。我想在我的应用程序中使用API做同样的事情。 我已经考虑过创建一个临时UDL文件并从上面的命令行打开的选项,这使得我与技术负责人的对话相当不愉快,所以这不是一个选项

欢迎所有建议。我不会放弃不安全的编码,也不会想到在C++中建立包装器(尽管现在我的C++不方便生锈)。
提前感谢大家,祝大家编码愉快。

各位开发人员您好

经过一个冗长乏味的研究过程,我找到了我想要的答案。 为了从一个C#64位应用程序为32位和64位平台使用OLEDB提供程序,我需要为32位调用创建进程外包装,并通过IPC(内部进程调用)进行调用。因为我公开的功能数量适中,所以阻碍只是在包装器上重新创建一些方法调用

帮助我将各个部分组装在一起,现在我能够确定允许用户创建哪种类型的OLEDB连接,并且我还能够执行所有需要的操作,而不考虑提供程序体系结构

我希望这将有利于其他可能有这个问题的人

如果时间(和保密协议)允许,我会把代码放在这里,供人们复制,稍后再试

这些链接对我的研究也非常有用

为代理激活注册DLL服务器 https://msdn.microsoft.com/en-us/library/windows/desktop/ms686606(v=vs.85).aspx)

编写服务组件 https://msdn.microsoft.com/en-us/library/3x7357ez(VS.80.aspx)

如何:创建服务组件 https://msdn.microsoft.com/en-us/library/ty17dz7h(VS.80.aspx)

在C#/.Net中创建进程外COM?http://stackoverflow.COM/questions/446417/Create-Out-Of-Process-COM-in-C-Net

谢谢大家


D

各位开发者,祝你们好

经过一个冗长乏味的研究过程,我找到了我想要的答案。 为了从一个C#64位应用程序为32位和64位平台使用OLEDB提供程序,我需要为32位调用创建进程外包装,并通过IPC(内部进程调用)进行调用。因为我公开的功能数量适中,所以阻碍只是在包装器上重新创建一些方法调用

帮助我将各个部分组装在一起,现在我能够确定允许用户创建哪种类型的OLEDB连接,并且我还能够执行所有需要的操作,而不考虑提供程序体系结构

我希望这将有利于其他可能有这个问题的人

如果时间(和保密协议)允许,我会把代码放在这里,供人们复制,稍后再试

这些链接对我的研究也非常有用

为代理激活注册DLL服务器 https://msdn.microsoft.com/en-us/library/windows/desktop/ms686606(v=vs.85).aspx)

编写服务组件 https://msdn.microsoft.com/en-us/library/3x7357ez(VS.80.aspx)

如何:创建服务组件 https://msdn.microsoft.com/en-us/library/ty17dz7h(VS.80.aspx)

在C#/.Net中创建进程外COM?http://stackoverflow.COM/questions/446417/Create-Out-Of-Process-COM-in-C-Net

谢谢大家

D