以下の宣言をコンソール アプリと winforms アプリで使用します。どちらも 3.5 フレームワークです。
[DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern NET_API_STATUS NetUseAdd(
LPWSTR UncServerName,
DWORD Level,
ref USE_INFO_2 Buf,
out DWORD ParmError);
コンソール アプリは問題ありませんが、winform アプリはエラーになります。
DLL 'NetApi32.dll' に 'NetUseAdd' という名前のエントリ ポイントが見つかりません
私はウェブを精査し、以下の宣言を思いつきました。この 1 は、winform アプリに対して同じエラーを返します。
[DllImport("NetApi32.dll",
SetLastError = true,
CharSet = CharSet.Unicode
)]
public static extern uint NetUseAdd(
string UncServerName,
UInt32 Level,
USE_INFO_2 Buf,
out UInt32 ParmError
);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct USE_INFO_2
{
public string ui2_local;
public string ui2_remote;
public string ui2_password;
public UInt32 ui2_status;
public UInt32 ui2_asg_type;
public UInt32 ui2_refcount;
public UInt32 ui2_usecount;
public string ui2_username;
public string ui2_domainname;
}
dumpbin /export を実行しました & NetUseAdd があります。
すべての助けに感謝します。