DirectoryEntry.NativeObject genera l'accesso negato per un utente nel gruppo Administrators in Windows 2008
-
06-07-2019 - |
Domanda
Ho un utente locale, che è membro del gruppo locale Administrators.
Quando eseguo questo codice:
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);
}
}
}
Ricevo:
Eccezione non gestita: System.Runtime.InteropServices.COMException (0x80070005): accesso negato.
a System.DirectoryServices.DirectoryEntry.Bind (booleano throwIfFail) a System.DirectoryServices.DirectoryEntry.Bind () a System.DirectoryServices.DirectoryEntry.get_NativeObject () at nanttest.Program.Main (String [] args) in c: \ Work \ nanttest \ nanttest \ Program.cs: linea 20
Se eseguo questo codice mentre eseguo l'accesso come amministratore, funziona correttamente.
Inoltre, questo codice non riesce se lo eseguo come utente DomainAdmin. Ho aggiunto MYDOMAIN \ DomainAdmins e MYDOMAIN \ mydomainuser come membri del gruppo Administrators locale.
Quali altre autorizzazioni devo aggiungere per questi utenti, in modo che possano eseguire questo codice.
Soluzione
Per rispondere alla mia domanda, in modo che altri possano trovare una soluzione:
Il problema riguarda le impostazioni predefinite del Controllo account utente in Windows 2008. Anche se un utente fa parte del gruppo Amministratori, ha ancora bisogno di privilegi elevati per eseguire alcune operazioni (quella sopra sembra essere tra queste).
Quindi, soluzione 1: esegui l'applicazione usando " Esegui come amministratore " oppure avviala da un prompt dei comandi, che è stato avviato con quell'opzione.
Soluzione 2: disabilita Controllo dell'account utente per il gruppo amministratori - Ho utilizzato il metodo n. 3 da questo articolo (modifiche ai criteri di gruppo). Ricorda di riavviare il server dopo queste modifiche.