DirectoryEntry.NativeObjectは、Windows 2008のAdministratorsグループのユーザーに対してアクセスを拒否します

StackOverflow https://stackoverflow.com/questions/263552

質問

管理者ローカルグループのメンバーであるローカルユーザーがいます。

このコードを実行すると:

using System;
using System.DirectoryServices;

namespace nanttest
{
    class Program
    {
        public static void Main(string[] args)
        {
            using(DirectoryEntry entry = new DirectoryEntry("IIS://localhost/W3SVC"))
            {
                object absobject = entry.NativeObject;
                Console.WriteLine("Name: {0}", entry.Name);
            }

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

受け取る:

  

未処理の例外:   System.Runtime.InteropServices.COMException   (0x80070005):アクセスが拒否されました。

     

at   System.DirectoryServices.DirectoryEntry.Bind(ブール   throwIfFail)で   System.DirectoryServices.DirectoryEntry.Bind()   で   System.DirectoryServices.DirectoryEntry.get_NativeObject()   nanttest.Program.Main(String []で   args)in   c:\ Work \ nanttest \ nanttest \ Program.cs:line   20

管理者としてログインしているときにこのコードを実行すると、正常に動作します。

また、DomainAdminユーザーとしてログインして実行すると、このコードは失敗します。 MYDOMAIN \ DomainAdminsおよびMYDOMAIN \ mydomainuserをローカルAdministratorsグループのメンバーとして追加しました。

これらのユーザーがこのコードを実行できるようにするために、これらのユーザーに追加する他の権限

役に立ちましたか?

解決

自分の質問に答えて、他の人が解決策を見つけられるようにする:

問題は、Windows 2008のデフォルトのUAC設定にあります。ユーザーがAdministratorsグループに属している場合でも、一部の操作を実行するには昇格された特権が必要です(上記の操作が含まれているようです)。

したがって、解決策1-「管理者として実行」を使用してアプリケーションを実行するか、そのオプションで起動されたコマンドプロンプトから起動します。

解決策2:管理者グループのUACを無効にする-この記事の方法#3を使用しました(グループポリシーの変更)。これらの変更後は、必ずサーバーを再起動してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top