2016-05-23 4 views
0

Ich versuche, die NetServerEnum-Funktion von der NetApi32-DLL zu verwenden, aber alles, was ich bekomme, ist der Fehlercode 5: "Zugriff wurde verweigert.". Unten ist mein Aufruf an die externe DLL-Funktion.Zugriff verweigert, während NetServerEnum von NetApi32

NetError nEr; 
SERVER_TYPE type = SERVER_TYPE.SV_TYPE_WORKSTATION | SERVER_TYPE.SV_TYPE_SERVER; // SV_TYPE_WORKSTATION = 0x00000001 and SV_TYPE_SERVER = 0x00000002 
IntPtr bufPtr; 
uint entriesread; 
uint totalentries; 
UInt32 resume_handle_value = 0; 
uint MAX_PREFERRED_LENGTH = 0xFFFFFFFF; 

nEr = (NetError)NetServerEnum(null, 100, out bufPtr, MAX_PREFERRED_LENGTH, out entriesread, out totalentries, (uint)type, null, ref resume_handle_value); 

if (nEr != NetError.NERR_Success) 
{ 
    NetApiBufferFree(bufPtr); 
    throw new InvalidOperationException(nEr);//Throws here with error code 5 -> "Access was denied." 
} 

Die Funktion wird als so erklärt,

[DllImport("Netapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)] 
public static extern int NetServerEnum([MarshalAs(UnmanagedType.LPWStr)]string servername, uint level, out IntPtr bufptr, uint prefmaxlen, out uint entriesread, out uint totalentries, uint servertype, [MarshalAs(UnmanagedType.LPWStr)]string domain, ref uint resume_handle); 

Ich habe versucht, meinen Domain-Namen zu dem Funktionsaufruf hinzufügen und mit einer anderen Informationsebene zu nennen, aber das hat nicht funktioniert entweder.

Hier ist ein Link zu der Microsoft-Dokumentation der Funktion: https://msdn.microsoft.com/en-us/library/windows/desktop/aa370623%28v=vs.85%29.aspx

Ist dieser Funktionsaufruf einen bestimmten Satz von Rechten benötigen? Ich vermisse hier offensichtlich etwas, aber ich weiß nicht was.

Antwort

0

Für jeden aus der Zukunft auf der Suche nach einer Antwort auf eine ähnliche Art von Problem, ich habe es herausgefunden.

Ich habe mich als Active Directory-Domänenadministrator-Konto ausgegeben, das nicht zur Gruppe "Domänen-Admins" der Domäne gehört. Das Hinzufügen des Administratorkontos als Mitglied von "Domänenadministratoren" hat das Problem behoben.

Also war es ein Rechtsproblem, ich vermute, es hat mit dem Kontoverwaltungssystem und den Sicherheitseinstellungen des lokalen Computers zu tun, da ich dort herausgefunden habe, dass 'MY-PC \ Administrators' 'MY-DOMAIN enthält \ Domänenadministratoren