zoukankan      html  css  js  c++  java
  • 获取Win32连接会话信息

    连接会话中保留信息。打开我的文件,在打开文件列表中也会有信息。获得第一手的会话信息,也就掌握了自己机器被连接的信息,就可以做出相应的处理。当然最重要的是获取这些信息。
    获取Win32共享文件夹,很快的,我们想到使用Win32_Share来获取,但要获取连接到本地机的会话状态呢?查阅了不少资料,包括微软官方的MSDN和民间的带有病毒的网页(顺便BS一些现在的SB网站,为了谋利,在网页中内嵌一些恶意脚本代码),最也没查到。到是学到了不少的其它知识。
    在我快要绝望放弃的时候,最后,还是很意外地在一个国外博客上找到了。不敢独享,共勉。

                //////////////////////////////////////////////////////////////////////////
                //作者:房客 http://sxlfybb.cnblogs.com
                
    //由 MVP Willy Denoyette处获悉
                
    //得到的鱼只是其一,其二是知道了有时候仅靠.net提供的托管对象是不能够解决问题的
                using (DirectoryEntry de = new DirectoryEntry("WinNT://csgzb/LanmanServer"))
                
    {
                    IADsFileServiceOperations fso 
    = de.NativeObject as IADsFileServiceOperations;
                    
    if(fso!= null)
                    
    {
                        
    //////////////////////////////////////////////////////////////////////////
                        //获取连接会话
                        //////////////////////////////////////////////////////////////////////////                    
                        foreach(IADsSession sess in fso.Sessions())
                        
    {
                            
    string str = "Name :" + sess.Name + "\tUser: " + sess.User + " \tComputer : " + sess.Computer;
                            listBox1.Items.Add(str);
                        }


                        
    //////////////////////////////////////////////////////////////////////////
                        //获取打开的文件
                        //////////////////////////////////////////////////////////////////////////     
                        IADsCollection resources = fso.Resources() as IADsCollection;
                        
    foreach (IADsResource resource in resources)
                        
    {
                        
    try
                        
    {
                            
    string str ="Path: "+resource.Path+"\tUser: "+resource.User+"\tLockCount: "+resource.LockCount+"\tName:"+resource.Name ;
                            listBox1.Items.Add(str);
                        }

                        
    catch (System.IO.FileNotFoundException ex){
                            
    // Watch Non-Fileshare resources like named pipes, these are not stored in the ADSI cache
                        }


                        }

                    }

                }

                    


    获取了这些信息,其它问题应该就迎刃而解了。搞定!

    最后,不得不说一句,还要引用一下ActiveDS,这才是问题的关键!

  • 相关阅读:
    异常
    抽象类
    java基础—接口3
    java基础—接口2
    java基础—接口1
    Android拍照适配方案
    继承—Car
    继承—矩形
    使用CSS和jQuery实现tab页
    纯CSS实现圆形进度条
  • 原文地址:https://www.cnblogs.com/sxlfybb/p/815701.html
Copyright © 2011-2022 走看看