1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c#访问其他服务器的共享文件夹 C#如何访问共享文件夹或者磁盘

c#访问其他服务器的共享文件夹 C#如何访问共享文件夹或者磁盘

时间:2019-05-05 11:00:24

相关推荐

c#访问其他服务器的共享文件夹 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();

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。