NetSessionEnum应用

格拉 2009-04-22 04:08:55
NetSessionEnum这个API函数有人研究过没?
...全文
166 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
格拉 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gomoku 的回复:]
引用 4 楼 clxcxx 的回复:
gomoku大侠:
这样没办法知道什么时间访问的啊。
能举个NetSessionEnum的例子吗?
谢谢了

这个我就不清楚了。

以下是NetSessionEnum的C#表示,由于netapi32的函数都是Unicode的,所以string都封送为LPWSTR。
将返回的bufptr拷贝到相应的SESSION_INFO_XX结构中:
SESSION_INFO_XX si = Marshal.PtrToStructure(bufptr, typeof(SESSION_INFO_XX));

记得要用另外导出NetApiBufferF…
[/Quote]
非常感谢!
结贴!
gomoku 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 clxcxx 的回复:]
gomoku大侠:
这样没办法知道什么时间访问的啊。
能举个NetSessionEnum的例子吗?
谢谢了
[/Quote]
这个我就不清楚了。

以下是NetSessionEnum的C#表示,由于netapi32的函数都是Unicode的,所以string都封送为LPWSTR。
将返回的bufptr拷贝到相应的SESSION_INFO_XX结构中:
SESSION_INFO_XX si = Marshal.PtrToStructure(bufptr, typeof(SESSION_INFO_XX));

记得要用另外导出NetApiBufferFree,并用它来释放bufptr。
NetApiBufferFree(bufptr);

[DllImport("netapi32.dll", SetLastError = true)]
private static extern int NetSessionEnum(
[In, MarshalAs(UnmanagedType.LPWStr)] string ServerName,
[In, MarshalAs(UnmanagedType.LPWStr)] string UncClientName,
[In, MarshalAs(UnmanagedType.LPWStr)] string UserName,
int Level,
out IntPtr bufptr,
int prefmaxlen,
ref int entriesread,
ref int totalentries,
ref int resume_handle);

具体请参考NetSessionEnum的MSDN文档,以及文档上的例子。

格拉 2009-04-22
  • 打赏
  • 举报
回复
0.0
格拉 2009-04-22
  • 打赏
  • 举报
回复
gomoku大侠:
这样没办法知道什么时间访问的啊。
能举个NetSessionEnum的例子吗?
谢谢了
格拉 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gomoku 的回复:]
如果只是要知道是谁在访问共享文件,可用WMI中的Win32_ConnectionShare来查询。

下面例子要添加到System.Management的引用,运行时要有管理员权限。

C# code
private void button1_Click(object sender, EventArgs e)
{
string query = "select * from Win32_ConnectionShare";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

StringBuilder sb = new StringBuilder();

[/Quote]
非常感谢gomoku,我试试看。
gomoku 2009-04-22
  • 打赏
  • 举报
回复
如果只是要知道是谁在访问共享文件,可用WMI中的Win32_ConnectionShare来查询。

下面例子要添加到System.Management的引用,运行时要有管理员权限。

private void button1_Click(object sender, EventArgs e)
{
string query = "select * from Win32_ConnectionShare";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

StringBuilder sb = new StringBuilder();
foreach (ManagementObject mo in searcher.Get())
{
string antecedent = mo["Antecedent"] as string;
string dependent = mo["Dependent"] as string;
sb.AppendFormat("{0} <= {1}\n", antecedent, dependent);
}

MessageBox.Show(sb.ToString());
}
格拉 2009-04-22
  • 打赏
  • 举报
回复
NetSessionEnum(server,pszClient,pszUser,dwLevel,(PBYTE *)&pBuf,MAX_PREFERRED_LENGTH,&er,&tr,&resume);

  //pszClient指定客户的地址;

  //pszUser指定用户名;

  //dwLevel的等级是10级;

  //pBuf返回SESSION_INFO_10数据结构的指针;

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧