我正在尝试使用 C# 和目录服务进行一些简单的数据检索,但由于某种原因,它不适用于任何 XP 机器。如果我在 Server 2003 机器上运行我的代码,则没有问题。我花了相当多的时间试图找出我在 XP 上是否需要一些可再分发的东西,或者该功能是否根本不存在,但我找到了对在 XP 下具有类似代码的其他开发人员的参考。如果有人有任何经验或建议可以分享,我将不胜感激。
一个让我崩溃的简单代码片段:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.DirectoryServices;
namespace IIS_Site_Query_Tool
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
DirectoryEntry W3SVC = new DirectoryEntry("IIS://localhost/w3svc");
foreach (DirectoryEntry Site in W3SVC.Children)
{
//Do some data processing
}
}
}
}
在 XP 下运行它会给我以下错误,HRESULT 为 -2147463168:
System.Runtime.InteropServices.COMException was unhandled
Message="Unknown error (0x80005000)"
Source="System.DirectoryServices"
ErrorCode=-2147463168
StackTrace:
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.get_IsContainer()
at System.DirectoryServices.DirectoryEntries.ChildEnumerator..ctor(DirectoryEntry container)
at System.DirectoryServices.DirectoryEntries.GetEnumerator()
...
谷歌搜索错误中的各种信息让我认为这是一个非常通用的 COM 互操作错误,我现在没有想法。任何帮助表示赞赏!