Vista 和进程外 COM 服务器
我在尝试弄清楚 Vista 上的用户权限和安全设置方面遇到了困难。情况是这样的:
我有一个 32 位 C++ 应用程序,充当进程外(==独立 exe)COM 服务器。我有几个使用此服务器的 .Net、FoxPro、X++ 和 C/AL 客户端应用程序。它们都在 WindowsXP 上运行。它们通常在 Windows Vista 上运行(32/64 似乎没有什么区别)。然而,Vista 上的行为非常不稳定。它通常是这样的:
1)从客户端实例化COM对象(从而启动服务器)->成功
2) 向服务器发送前几个命令 ->成功
3) 崩溃并出现异常,表明客户端 COM 对象未绑定?!搞什么?!我们刚刚在第 2 步中成功使用了该对象!
如果我在客户端程序上“以管理员身份启动”,它总是可以正确可靠地工作。但是,仅以管理员身份登录并通过双击启动客户端将会失败。两者有什么区别?
客户端和服务器在同一台机器上本地运行。这是在虚拟机上全新安装 Vista Ultimate 32 位。
我已经完全束手无策了。有什么建议吗?
I'm having a hell of a time trying to figure out user privilidges and security settings on Vista. The situation is this:
I have a 32 bit C++ application that acts as an out-of-process (==standalone exe) COM server. I have several .Net, FoxPro, X++ and C/AL client applications that use this server. They all work on WindowsXP. They often work on Windows Vista (32/64 doesn't seem to make a difference). However the behaviour on Vista is very erratic. It usually goes something like this:
1) instantiate the COM object (thus starting the server) from the client -> success
2) send the first couple of commands to the server -> success
3) crash with an exception stating the client side COM object isn't bound?! WTF?! We have just used this object successfully for step 2!
It always works correctly and reliably if I do "start as administrator" on the client program. However, just being logged in as administrator and launching the client via double click will fail. What is the difference between the two?
Client and server run locally on the same machine. It's a clean install of Vista Ultimate 32 bit on a virtual machine.
I'm completely at my wits end here. Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有关 vista 中管理员和管理员之间差异的一些评论,请参见此处:链接text
您可以将 com 对象安装为适当的服务吗?我认为默认情况下它会以管理员身份运行
Some comments on the differences between being an administrator and an ADMINISTRATOR in vista available here: link text
Can you install your com object as a proper service, I think by default it then runs as the ADMINISTRATOR