2016-05-23 5 views
0

NetApi32 dllからNetServerEnum関数を使用しようとしていますが、エラーコード5が表示されています:「アクセスが拒否されました。 以下は私の外部dll関数呼び出しです。NetApi32からNetServerEnumを使用しているときにアクセスが拒否されました

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

は、私は、関数呼び出しに自分のドメイン名を追加しようとした、と異なる情報レベルで呼び出すことが、それはどちらか動作しませんでした、ように宣言されています。ここで

は、機能のマイクロソフトのドキュメントへのリンクです:https://msdn.microsoft.com/en-us/library/windows/desktop/aa370623%28v=vs.85%29.aspx

は、この関数呼び出しを権利の特定のセットを必要とするのか?私は明らかにここに何かを紛失していますが、私は何が分かりません。

答えて

0

似たような種類の問題への回答を探している人にとって、私はそれを理解しました。

ドメインの「Domain Admins」グループに属していないActive Directoryドメイン管理者アカウントを偽装していました。管理者アカウントを「Domain Admins」のメンバーとして追加すると、この問題が解決されました。

これは権利の問題で、ローカルコンピュータのアカウント管理システムとセキュリティ設定に関係していると思います。「MY-PC \ Administrators」には「MY-DOMAIN」が含まれていることがわかりました\ Domain Admins '

関連する問題