C#如何访问共享文件夹或者磁盘
作者:边界流浪者 时间:2023-11-08 09:43:44
本文实例为大家分享了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();
}
}
}
来源:https://blog.csdn.net/qq_16542775/article/details/52779812
标签:C#,访问,共享文件
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C#读写文件的方法汇总
2022-03-01 04:41:41
java 之JNA中的Memory和Pointer的使用方法
2022-10-25 14:18:35
Java递归运行的机制:递归的微观解读图文分析
2022-09-24 20:04:09
![](https://img.aspxhome.com/file/2023/5/73035_0s.png)
解决Properties属性文件中的值有等号和换行的小问题
2023-09-07 19:22:58
Java数据结构及算法实例:三角数字
2023-08-24 17:52:25
ElasticSearch查询文档基本操作实例
2023-11-24 14:20:02
springcloud中RabbitMQ死信队列与延迟交换机实现方法
2023-05-04 04:25:54
Android常见控件使用详解
2023-03-11 13:15:23
![](https://img.aspxhome.com/file/2023/6/91666_0s.jpg)
Android中实现Webview顶部带进度条的方法
2022-04-22 15:45:43
![](https://img.aspxhome.com/file/2023/2/116142_0s.png)
java学生管理系统界面简单实现(全)
2023-11-28 21:35:25
Spring Boot @Conditional注解用法示例介绍
2023-04-18 22:51:51
springboot过滤器和拦截器的实例代码
2021-09-14 04:53:17
Android用户输入自动提示控件AutoCompleteTextView使用方法
2022-02-25 14:59:50
![](https://img.aspxhome.com/file/2023/5/137185_0s.jpg)
Android Activity的启动过程源码解析
2023-12-25 11:16:00
![](https://img.aspxhome.com/file/2023/4/138514_0s.png)
Android登录时密码保护功能
2023-10-24 07:09:40
![](https://img.aspxhome.com/file/2023/6/138316_0s.png)
C#泛型委托的用法实例分析
2021-09-16 23:29:52
![](https://img.aspxhome.com/file/2023/9/92909_0s.jpg)
详细聊聊如何在C#循环中捕获局部变量
2021-10-30 17:05:13
Spring Boot应用发布到Docker的实现
2021-08-21 09:53:50
SpringCloud Config分布式配置中心使用教程介绍
2023-09-15 00:56:06
Java数据结构学习之二叉树
2023-04-25 12:08:27
![](https://img.aspxhome.com/file/2023/1/68171_0s.png)