一个很古老的问题:VB DCOM 70错误,permission denied
问题:
VB6程序,msdn上的测试程序
'server:
Public Function ServerTime() As String
ServerTime = Time
End Function
'client:
Private Sub Command1_Click()
Dim MyObj As dcmTest.Class1
On Error GoTo err1
Set MyObj = CreateObject("dcmTest.Class1")
MsgBox "Server Time=" & MyObj.ServerTime & " Client Time=" & Time
Exit Sub
err1:
MsgBox "Connection failed: Error " & Err.Number & " - " & Err.Description
End Sub
错误:Connection failed: Error 70 - Permission denied
环境及设置:server和client都是xp sp3,没有域账户,都用本地账户,防火墙都关掉了,server和client的dcomcnfg里“我的电脑”和服务程序的安全设置都给Everyone/System/INTRACTIVE用户赋予了全部的权限;server和client的组策略里两个DCOM SDDL设置里也都给Everyone/System/INTRACTIVE用户赋予了全部的权限。server的身份验证级别都设置的是“无”,标识类型是“交互式用户”
怎么尝试都不好用:((((((
除非server和client的administrator密码一致,这样好用,但这样不可能啊,因为每个client都有自己的密码,实际环境中不可能把管理员密码设置成一样的。
从http://support.microsoft.com/kb/269330/EN-US/可以看出来,不使用域用户而使用本地用户的情况下是可以访问的,肯定是权限设置问题。
但翻来覆去就是调不通啊,求救求救,谢谢谢谢。
[解决办法]
在Server端启用Guest帐号
http://blogs.msdn.com/b/asiatech/archive/2009/05/04/how-to-call-com-remotely-with-anonymous-user.aspx
[解决办法]
只有 WinXP 的安全要求更高,原先在 Win95/98 下可以各自用工作组的本地用户,现在只能用域用户。
两边的本地用户名称和密码相同的情况,等于是将一个用户加在了两台计算机上。
如果你可以将所有的客户端用户(同名、同密码)加到服务器上,试试 DCOM 设为用当前用户。
[解决办法]
“下列用户”中有没有将所有与客户端对应的用户填到列表中?
还有在服务端测试一下与客户端同名的用户是否有访问权:
服务端共享任意目录,只给指定的某个客户端用户(不包括 everyone);
然后客户端访问该共享目录试试。
[解决办法]
提示输入用户名密码说明 XP 还是显式验证的。
将与客户端对应的用户添加到 DCOM 组件属性,“安全”页的“启动和激活权限”、“访问权限”中试试。
[解决办法]
留个MSN给我,我帮你看
[解决办法]
提示输入用户名密码说明 XP 根本不认同对方的本地用户,看来只能用域用户了。
既然 administrator 相同可用,那么可以试试:
将域的管理员加到本地的管理员组中;
DCOM 服务的登录用户指定为域管理员。
[解决办法]
这样在这里写来写去也写不清楚,太浪费时间了。搞个远程协助好了。