旧的服务器是Windows 2000,原始设置人员的答案几乎一切都是C:\ – > Everyone – >完全控制。 但是,这里有一个设置文档,似乎工作到一定程度。
服务器对象错误“ASP 0178:80070005”Server.CreateObject访问错误/Include/fnLookups.asp,第10行在检查权限时,对Server.CreateObject的调用失败。 拒绝访问此对象。
10号线似乎是:
set objClient = Server.CreateObject(“fooUser.CfooUser”)
我发送到系统日志,我有:
特定于应用程序的权限设置不授予CLSID {280D5CF7-80A4-40AC-844C-FE3653F02FF1}的COM服务器应用程序对用户mydomain \ myusername SID(mySID)的本地激活权限。 可以使用组件服务pipe理工具修改此安全权限。
这是sorting的进展,它拿起COM应用程序和我的ID很好。 我把自己添加到了dcomdnfg中“我的电脑”对象的“访问权限”和“启动和激活权限” – 但我的咆哮似乎是针对错误的树。
我尽可能地跑过mskb198432 ,虽然它似乎是针对早期版本,但在那里也没有喜悦。
任何想法都欢迎。
编辑 – 尝试build议列表
编辑 – 有什么我可以看看在旧的Windows 2K服务器,可以借给一些见解?
您是否尝试将相关用户添加到本地DCOM用户组?
http://technet.microsoft.com/en-us/library/cc738214(WS.10).aspx
这个错误是线索:
特定于应用程序的权限设置不授予CLSID {280D5CF7-80A4-40AC-844C-FE3653F02FF1}的COM服务器应用程序对用户mydomain \ myusername SID(mySID)的本地激活权限。
COM对象不应该像你一样运行,它应该作为IUSR_MachineName或networking服务用户(运行IIS的用户)运行。 你不希望每个访问这个站点的用户都像他们一样运行这个DLL – 这个主意不好。
请确保您的虚拟目录指向具有正在运行IIS(IUSR_machinename)的用户的物理目录的权限具有正确的权限,并且在COM中注册的DLL具有IIS用户的正确权限。
权限很难在IIS中进行debugging,因为安全事件并不总是logging到安全事件日志中。 身份validation和访问控制诊断1.0工具是一个很好的工具,用于调查权限问题。
http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1285
为了完整起见,将网站作为ASP.Net 1.0和ASP.Net 2.0运行是有区别的。 尽pipe框架是向后兼容的,但是我build议尝试将该站点作为Framework 1.1站点运行。 这可能需要加载Framework 1.1。
但代码示例表明这是经典的ASP。 因此,这个问题与COM对象的安全性有关。 确保DLL已被注册,并且还有一种可能性,即您授予权限的对象依赖于其他未授予访问权限的DLL。
此外,在更改安全性或对此事的任何更改时,重新启动IIS以及组件服务器中的组件本身。 由于内存caching和其他原因,通常需要启动。
根据微软networking科技博客,这个错误是由于Windows 2003 SP1或SP2中引入的增强的DCOM安全性引起的。
这个博客有一个非常详细的运行这个问题,以及如何解决这个问题。
像一些用户抱怨,你不清楚,如果这是经典的asp或asp.net。 这就是说,与您的主题和错误消息,这里是我的2美分
这是一个.NET应用程序
它看起来像你的应用程序正在访问一个COM对象,所以确保IIS工作进程有权访问该组件。 您可以尝试运行FILEMON和REGMON来确定究竟哪个组件是罪魁祸首。 如果该组件位于Program Files / Common文件夹中,请确保在该文件夹上设置了正确的权限。
在ASP.NET中甚至是Classis ASP中访问COM组件通常是一个B …来排除故障。
这是一个经典的ASP应用程序,而不是一个ASP.NET应用程序。 确保托pipe该应用程序的IIS应用程序池正在您创build的用户的上下文中运行。 另外,请确保应用程序不在任何其他托pipeASP.NET应用程序的应用程序池中。
正如其他人所说,这是一个经典的ASP和COM问题 – 似乎与.NET没有任何关系。
所有我可以添加到所说的是不要忘记,以确保用户有权访问文件系统上的COM对象的DLL。
我将自己添加到dcomcnfg中“我的电脑”对象的“访问权限”和“启动和激活权限”
我的电脑上有两个不同的安全设置 – 限制和默认值。 你需要仔细检查你编辑的默认值,并且限制至less比你的默认值更高(尽pipeIIRC,每个人都可以有本地激活)。
您还应该深入到组件本身,并确保它使用的是默认安全性。 如果它是自定义的,那么你也需要编辑它(记住限制)。
对于故障排除,我非常想尝试给每个本地启动和激活权限,以确保它是一个COM权限问题。 IIRC,组件启动中的错误可能会产生误导性的错误信息,这会使您一时难以理解。
编辑:你也应该确保事件日志中引用的GUID实际上是你认为它的组件。 使用Regedit来查找GUID,并检查AppName。 这可能不是已安装的组件,而是依赖项。
尝试给“networking服务”访问“Temp”目录(C:\ WINDOWS \ Temp)
我希望这有帮助 ;-)
你是否运行应用程序池作为你的帐户(mydomain \ myusername)? 如果是这样,您将需要将该帐户添加到IIS_WPG。
您可能还需要将IIS_WPG添加到“分布式COM用户”组或在组件服务中查找实际项目,并直接授予对IIS_WPG的访问权限
ASP.Net工作进程w3wp.exe默认运行在W2K3上的NETWORK SERVICE帐户下。
检查此帐户是否有权访问和实例化对象。
上周我正在处理这个问题。 您需要确保ASPNET用户(是的,我知道它是传统的ASP)有权“作为批处理login”和“作为服务login”。
从pipe理工具,本地安全策略,打开本地策略 – >用户权限分配,并确保aspnet用户有这些策略的权利。
也可以添加IWAM_和IUSR_。
您可能想要通过KB 899965 ,它有一些相当详细的步骤,似乎可能是一个更具体的问题。
希望有所帮助!
除了其他build议之外,我还会尝试在IIS 5隔离模式下运行网站,以排除IIS 5(Server 2000)和更安全的IIS 6(Server 2003)之间的差异。