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.