以编程方式发现“仅来宾”共享/安全模式

在现代Windows上,默认configuration是这样完成的,即如果我以本地用户的身份loginnetworking,实际上我只能以来宾身份进行身份validation(有关此行为的更多详细信息,请参阅http://technet.microsoft.com /en-us/library/cc786449(WS.10).aspx )

当我的程序试图通过DCOM访问这种types的服务器上的WMI时,我只是简单地得到“访问被拒绝”的错误,大概是因为来宾用户不允许连接到WMI。

我想区分这种错误与其他types的访问被拒绝的错误,如错误的密码或不存在的用户名,以便我可以向用户解释他们需要解决什么问题。

所以我的问题是,我能做些什么来检测这样的服务器。 我在想,如果有一些COM组件可以被客户激活,那就可以了—我可以尝试激活这样的组件,如果这样做的话,我知道我的login凭证是正确的。 但我想不出任何这样的具体的组成部分。

有谁知道这样的组件? 或者其他任何方式来诊断这种情况?

不,我不记得有一个客人可以访问的DCOM服务器。 那不是不安全吗? 如果您有时间可以使用dcomcnfg检查DCOM服务器的所有安全设置。 也许有一个客人。 但我不这么认为。

另一方面。 您无法在客户端看到AccessDenied背后的原因,因为这会使服务器更容易受到攻击。 如果攻击者能够区分不同类型的访问被拒绝的错误,他可能会相应地适应他的行为。 但是,如果您有权访问服务器,则可以激活DCOM日志记录(请参阅http://support.microsoft.com/?scid=kb%3Ben-us%3B892500&x=18&y=11

作为一个解决方案,我建议你写出这样一个类似的问题,以及它们如何发生在FAQ / Readme / Web页面。 人们倾向于搜索网络,而不是阅读一个消息框。