C#如何访问共享文件夹或者磁盘
发布时间:2020-12-15 05:42:17 所属栏目:百科 来源:网络整理
导读:本文实例为大家分享了C#访问共享文件夹或者磁盘的具体代码,供大家参考,具体内容如下 SharedTool: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace ConsoleAppl
本文实例为大家分享了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.101c$"; 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# – .NET是否具有KeyValuePair的现有二进制搜索类
- SQLite on BlackBerry 完美支持中文
- CFE常用引导命令
- c# – 使用嵌套的Parallel.For
- 滚动加载(ajax)内容添加事件 && jQuery.on() 函数
- Cocoa依赖包管理工具
- c# – 如何检测KeyDown或KeyUp WPF事件中的方括号?
- Flex:思考--如何实现TrayIcon PPT放映效果??
- vue2.0 element-ui中的el-select选择器无法显示选中的内容
- JSONObject json = JSONObject.fromObject(map); 执行出现异