温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#访问共享文件夹或者磁盘的方法

发布时间:2021-02-08 15:46:27 来源:亿速云 阅读:896 作者:小新 栏目:编程语言

小编给大家分享一下C#访问共享文件夹或者磁盘的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

C#访问共享文件夹或者磁盘的具体代码如下

SharedTool:

using System;   using System.Collections.Generic;   using System.Linq;   using System.Text;   using System.Runtime.InteropServices;      namespace ConsoleApplication5   {     public class SharedTool : IDisposable     {       // obtains user token          [DllImport("advapi32.dll", SetLastError = true)]       static extern bool LogonUser(string pszUsername, string pszDomain, string pszPassword,         int dwLogonType, int dwLogonProvider, ref IntPtr phToken);          // closes open handes returned by LogonUser          [DllImport("kernel32.dll", CharSet = CharSet.Auto)]       extern static bool CloseHandle(IntPtr handle);          [DllImport("Advapi32.DLL")]       static extern bool ImpersonateLoggedOnUser(IntPtr hToken);          [DllImport("Advapi32.DLL")]       static extern bool RevertToSelf();       const int LOGON32_PROVIDER_DEFAULT = 0;       const int LOGON32_LOGON_NEWCREDENTIALS = 9;//域控中的需要用:Interactive = 2          private bool disposed;          public SharedTool(string username, string password, string ip)       {         // initialize tokens            IntPtr pExistingTokenHandle = new IntPtr(0);         IntPtr pDuplicateTokenHandle = new IntPtr(0);            try         {           // get handle to token              bool bImpersonated = LogonUser(username, ip, password,             LOGON32_LOGON_NEWCREDENTIALS, LOGON32_PROVIDER_DEFAULT, ref pExistingTokenHandle);              if (bImpersonated)           {             if (!ImpersonateLoggedOnUser(pExistingTokenHandle))             {               int nErrorCode = Marshal.GetLastWin32Error();               throw new Exception("ImpersonateLoggedOnUser error;Code=" + nErrorCode);             }           }           else           {             int nErrorCode = Marshal.GetLastWin32Error();             throw new Exception("LogonUser error;Code=" + nErrorCode);           }         }         finally         {           // close handle(s)              if (pExistingTokenHandle != IntPtr.Zero)             CloseHandle(pExistingTokenHandle);           if (pDuplicateTokenHandle != IntPtr.Zero)             CloseHandle(pDuplicateTokenHandle);         }       }          protected virtual void Dispose(bool disposing)       {         if (!disposed)         {           RevertToSelf();           disposed = true;         }       }          public void Dispose()       {         Dispose(true);       }     }   }

 案例:

using System;   using System.Collections.Generic;   using System.Linq;   using System.Text;   using System.IO;      namespace ConsoleApplication5   {     class Program     {       static void Main(string[] args)       {         using (SharedTool tool = new SharedTool("administrator", "12345678", "192.168.1.101"))         {           string selectPath = @"\\192.168.1.101\c$";              var dicInfo = new DirectoryInfo(selectPath);//选择的目录信息              DirectoryInfo[] dic = dicInfo.GetDirectories("*.*", SearchOption.TopDirectoryOnly);           foreach (DirectoryInfo temp in dic)           {             Console.WriteLine(temp.FullName);           }              Console.WriteLine("---------------------------");           FileInfo[] textFiles = dicInfo.GetFiles("*.*", SearchOption.TopDirectoryOnly);//获取所有目录包含子目录下的文件           foreach (FileInfo temp in textFiles)           {             Console.WriteLine(temp.Name);           }         }         Console.ReadKey();       }     }   }

看完了这篇文章,相信你对“C#访问共享文件夹或者磁盘的方法”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI