问题描述
我想从 C# 执行 NetUseEnum。我的目标是列出本地计算机可用的网络共享。我对要传递的参数的偏好是:
-
UncServerName
=null
; (使用本地计算机) -
LevelFlags
= 0; (USE_INFO_0
)
正确的方法签名是什么?
[DllImport("C:\\dev\\netapi32.dll",SetLastError = true,CharSet = CharSet.Unicode)]
public static extern uint NetUseEnum(
UnmanagedType uncServerName,UInt32 level,ref IntPtr buf,UInt32 preferedMaximumSize,out int entriesRead,out int totalEntries,IntPtr resumeHandle
);
正确的方法调用是什么?
static void Main(string[] args) {
string UncServerName;
IntPtr lBuffer = IntPtr.Zero;
int lRead;
int lTotal;
IntPtr lHandle = IntPtr.Zero;
NetUseEnum(null,ref lBuffer,0xffffffff,out lRead,out lTotal,lHandle);
//iterate through lBuffer
NetApiBufferFree(lBuffer);
}
上面的代码不能正常工作,因为需要修改字符串处理代码。
特别是,WinAPI(更喜欢使用指向 Unicode 字符串的指针,即 LPWStr)和 C#(更喜欢使用 strings/Strings)之间发生不兼容。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)