C#如何访问共享文件夹或者磁盘
2018-05-21 14:14
676 查看
本文实例为大家分享了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# 访问共享文件夹或者磁盘(需要用户名密码)
- C# 访问共享文件夹或者磁盘(需要用户名密码)
- 如何更换用户访问共享文件夹
- C#如何判断某个文件夹是否为共享,访问权限为只读
- ubuntu如何访问windows共享文件夹
- Mac机如何访问windows和linux的共享文件夹
- 如何审计访问共享文件的客户端电脑以及清除在Windows下访问共享文件夹时的登录信息
- 如何让电脑需要密码登陆,共享文件夹 不需要密码访问?
- Linux 如何挂载windows XP 共享文件夹或者你的xp电脑的硬盘分区
- 如何不切换windows登陆用户,更换用户名访问共享文件夹
- 如何不用输入用户名访问共享文件夹
- ubuntu如何访问windows共享文件夹
- Mac机如何访问windows和linux的共享文件夹
- 如何更改访问共享文件夹的用户名和密码
- Win7如何隐藏共享文件夹、怎样隐藏用户没有权限访问的共享文件夹
- 如何访问他人电脑上的共享文件夹
- 如何不切换windows登陆用户,更换用户名访问共享文件夹
- ubuntu如何实现访问实际网络中windows共享文件夹
- Win2003共享文件夹权限设置以及如何不需要密码访问共享文件?