比如在局域网内有一台服务器,上面有一个共享文件夹,一般人工访问方式是这样的:在“运行”里输入:\\192.168.0.110\d$\share  然后输入用户名,密码,这样的工作如何在程序中完成。谢谢

解决方案 »

  1.   

    private   enum   NetError   :   uint   
      {   
      NERR_Success   =   0,   
      NERR_BASE   =   2100,   
      NERR_UnknownDevDir   =   (NERR_BASE   +   16),   
      NERR_DuplicateShare   =   (NERR_BASE   +   18),   
      NERR_BufTooSmall   =   (NERR_BASE   +   23),   
      }   
        
      private   enum   SHARE_TYPE   :   uint   
      {   
      STYPE_DISKTREE   =   0,   
      STYPE_PRINTQ   =   1,   
      STYPE_DEVICE   =   2,   
      STYPE_IPC   =   3,   
      STYPE_SPECIAL   =   0x80000000,   
      }   
        
      [StructLayout(LayoutKind.Sequential)]   
      private   struct   SHARE_INFO_502   
      {   
      [MarshalAs(UnmanagedType.LPWStr)]   public   string   shi502_netname;   
      public   SHARE_TYPE   shi502_type;   
      [MarshalAs(UnmanagedType.LPWStr)]   public   string   shi502_re;   
      public   Int32   shi502_permissions;   
      public   Int32   shi502_max_uses;   
      public   Int32   shi502_current_uses;   
      [MarshalAs(UnmanagedType.LPWStr)]   public   string   shi502_path;   
      [MarshalAs(UnmanagedType.LPWStr)]   public   string   shi502_passwd;   
      public   Int32   shi502_reserved;   
      public   IntPtr   shi502_security_descriptor;   
      }   
        
      [DllImport("Netapi32.dll")]   
      private   static   extern   uint   NetShareAdd(   
      [MarshalAs(UnmanagedType.LPWStr)]   string   strServer,   
      Int32   dwLevel,   
      ref   SHARE_INFO_502   buf,   
      out   uint   parm_err);   
        
      public   static   uint   Test(string   path,   string   shareName,   string   shareDesc)   
      {   
      //string   shareName   =   "testshare";   
      //string   shareDesc   =   "This   is   a   test   share   kekelar2000";   
      //string   path   =   @"C:\MyShareDirectory";   //   do   not   append   comma,   it'll   fail   
        
      SHARE_INFO_502   info   =   new   SHARE_INFO_502();   
      info.shi502_netname   =   shareName;   
      info.shi502_type   =   SHARE_TYPE.STYPE_DISKTREE;   
      info.shi502_re   =   shareDesc;   
      info.shi502_permissions   =   0;         //   ignored   for   user-level   security   
      info.shi502_max_uses   =   -1;   
      info.shi502_current_uses   =   0;         //   ignored   for   set   
      info.shi502_path   =   path;   
      info.shi502_passwd   =   null;                 //   ignored   for   user-level   security   
      info.shi502_reserved   =   0;   
      info.shi502_security_descriptor   =   IntPtr.Zero;   
        
      uint   error   =   0;   
      return   NetShareAdd(null,   502,   ref   info,   out   error);   
      }   
        
        
      调用测试:   
      Console.WriteLine(CSConsole.NetShare.Test(@"G:\ShareWritable",   "ShareWritable",   "Des"));
      

  2.   

    像这种要求输入系统密码的情况,在弹出对话框的地方系统一般会提供出输入的对话框,且一定要使用系统的对话框,因为我们在程序里不能够得到用户的密码.也就是说当用户有可能连接到一个需要用户提供用户名及密码的地方,我们应该调用系统API等方法,在这些方法里系统会默认的弹出对话框供输入密码而自动的由这个用户密码来打开目标.
      

  3.   

    一样的,用Dos命令,然后打开就是了;如何用VB.NET的Process编写在DOS命令提示符(CMD)下要运行的命令???
    Process.Start("cmd.exe", "/k Net Use \\192.168.0.110\d$\share 密码 /user:用户")VB下也可以用
    Shell "Net Use \\192.168.0.110\d$\share 密码 /user:用户", vbHide这些都可以隐藏的暗中代开共享,不过重复打开需要把连接先进性删除操作===========================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    Email:loving-kiss@163.com
    本人说明:<我的帖子我做主,结贴率保持100%>
    优惠接单开发,信誉保证,Q66840199(请注明业务/技术咨询) 
    ===========================================================
      

  4.   

    楼上星星们提供的方法太复杂了点吧??用得着么?呵呵~~===========================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    Email:loving-kiss@163.com
    本人说明:<我的帖子我做主,结贴率保持100%>
    优惠接单开发,信誉保证,Q66840199(请注明业务/技术咨询) 
    ===========================================================
      

  5.   

    DOS虽小,可是解决这类网络问题,绝对是不贰首选!!~~===========================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    Email:loving-kiss@163.com
    本人说明:<我的帖子我做主,结贴率保持100%>
    优惠接单开发,信誉保证,Q66840199(请注明业务/技术咨询) 
    ===========================================================
      

  6.   

    你这个ip在哪输入呢,还有username ,password
      

  7.   

    to lovingkiss  怎么把文件下载到当前的程序运行的路径呢
      

  8.   

    声明一个字符串,把信息嵌套进去阿,然后Shell 该字符串, vbHide类似的就这么做啊——我都是这样做的啦,肯定没有问题;===========================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    Email:loving-kiss@163.com
    本人说明:<我的帖子我做主,结贴率保持100%>
    优惠接单开发,信誉保证,Q66840199(请注明业务/技术咨询) 
    ===========================================================
      

  9.   

    具体说说吧,比如有一个文件叫a.txt,怎么下到本机c:\下
      

  10.   

    用net use去连接
    成功后就象使用本地机一样
      

  11.   

    比如 我已经net use 、、192.168.0.110\d$ pwd /user:uid 
    然后我FILE.COPY("\\192.168.0.110\D$\A.TXT",C:\A.TXT,TRUE)
    这样对么
      

  12.   

    是的,就是这么用的;就是第二次连接同一个目标,记得先删除,再连接——每次都删除也没有问题,它只有在重复建立才出错,删除不存在的时候不出错;
    ===========================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    Email:loving-kiss@163.com
    本人说明:<我的帖子我做主,结贴率保持100%>
    优惠接单开发,信誉保证,Q66840199(请注明业务/技术咨询) 
    ===========================================================