DirectoryEntry.NativeObjectは、Windows 2008のAdministratorsグループのユーザーに対してアクセスを拒否します
-
06-07-2019 - |
質問
管理者ローカルグループのメンバーであるローカルユーザーがいます。
このコードを実行すると:
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を使用しました(グループポリシーの変更)。これらの変更後は、必ずサーバーを再起動してください。