0

A は、Active Directory スキーマにカスタム属性を追加しました。あるマシンで属性をクエリしようとすると、コードからエラーが返されます。

これをテストするための C# バージョンを次に示します。

static class Program
{
    static void Main()
    {
        Console.ReadLine();
        DirectoryEntry directoryEntry = (DirectoryEntry)UserPrincipal.Current.GetUnderlyingObject();

        //Execption on this line
        var allowedDatabases = directoryEntry.Properties["vwDBAccess"]; 

        foreach (var record in allowedDatabases.OfType<String>())
        {
            Console.WriteLine(record);
        }
        Console.ReadLine();
    }

}
System.Runtime.InteropServices.COMException が処理されませんでした
  Message=不明なエラー (0x8000500c)
  Source=System.DirectoryServices
  エラーコード=-2147463156
  スタックトレース:
       System.DirectoryServices.PropertyValueCollection.PopulateList() で
       System.DirectoryServices.PropertyValueCollection..ctor (DirectoryEntry エントリ、文字列 propertyName) で
       System.DirectoryServices.PropertyCollection.get_Item (文字列 propertyName) で
       C:\Users\srchamberlain.VW\documents\visual studio 2010\Projects\Sandbox Console\Sandbox Console\Program.cs:line 16 の Sandbox_Console.Program.Main() で
  内部例外:

エラー コード0x8000500cは を表しE_ADS_CANT_CONVERT_DATATYPEます。これは、1 台のマシンでのみ発生します。他に 3 台のコンピューター (すべて最初のコンピューターと同じドメインの一部) があり、まったく同じユーザーに対してまったく同じコードを実行し、属性の内容を与えると、それらは正しく動作します。また、同じボックスで別のユーザーとして実行しているが、悪いユーザーの属性を照会すると、別のユーザーとして接続したときに情報を正しく取得できます。

この KB 記事の手法を使用してボックスのスキーマを更新しようとしましたが、問題はまだ発生しています。

この 1 台のコンピューターで何が問題になっているのでしょうか?


説明:

vwDBAccess は複数値の文字列であるため、機能すると、項目が 1 つある場合、複数ある場合、および項目がない場合にdirectoryEntry.Properties["vwDBAccess"]a が返されます。このアカウントには3つのアイテムが設定されています。別のユーザーとして実行し、悪いユーザーにクエリを実行すると、正しく返されます。stringsting[]nullstring[3]

4

1 に答える 1

1

通常、何かがネットワーク内の 1 台のマシンでのみ発生している場合は、OS のサービス パックと更新レベル、またはシステム上の他のソフトウェアとの相互作用に要約されます (A/V は最悪の犯罪者です)。

私が最初に行うことは、稼働中のマシンに適用された SP と更新プログラムを確認し、それを稼働していないマシンと比較することです。次の 2 つの状況のいずれかが表示されます。

稼働中のマシンが最新の場合は、稼働していないマシンに必要な更新を適用します。

稼働中のマシンが最新でない場合は、1 つを更新して、失敗し始めるかどうかを確認します。その場合は、MS に連絡する必要があります。

私の直感によると、動作していないマシンは単に時代遅れです。

于 2012-10-11T17:37:56.573 に答える