Доступ запрещен при использовании NetServerEnum из NetApi32

Я пытаюсь использовать функцию NetServerEnum из библиотеки NetApi32, но все, что я получаю, это код ошибки 5: "Доступ запрещен". Ниже мой вызов внешней функции DLL.

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."
}

Функция объявлена ​​так,

[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);

Я попытался добавить свое доменное имя к вызову функции и к вызову с другим информационным уровнем, но это тоже не сработало.

Вот ссылка на документацию по этой функции для Microsoft: https://msdn.microsoft.com/en-us/library/windows/desktop/aa370623%28v=vs.85%29.aspx

Для этого вызова функции нужен определенный набор прав? Я явно что-то здесь упускаю, но не могу понять, что.

1 ответ

Решение

Для любого из будущего, ищущего ответ на любой подобный вопрос, я понял это.

Я олицетворял собой учетную запись администратора домена Active Directory, которая не входила в группу "Администраторы домена". Добавление учетной записи администратора в качестве члена "Администраторы домена" решило проблему.

Так что это была проблема с правами, я предполагаю, что это связано с системой управления учетными записями локального компьютера и настройками безопасности, поскольку я обнаружил там, что "MY-PC\Administrators" содержит "MY-DOMAIN\Domain Admins"

Другие вопросы по тегам