C#怎么访问共享目录
来源:互联网 发布:软件使用说明文档 编辑:程序博客网 时间:2024/04/29 04:12
用C#访问共享目录总是出现权限问题,让人很头疼,研究了很久找到一种办法,贴上代码:
public class IdentityScope : 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 IdentityScope(string sUsername,string sPassword, string sDomain) { // initialize tokens IntPtr pExistingTokenHandle = new IntPtr(0); IntPtr pDuplicateTokenHandle = new IntPtr(0); try { // get handle to token bool bImpersonated = LogonUser(sUsername, sDomain, sPassword, LOGON32_LOGON_NEWCREDENTIALS, LOGON32_PROVIDER_DEFAULT, ref pExistingTokenHandle); if (true == 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); } }
通过IdentityScope传入目标机器的IP,用户名和密码就可以访问到共享目录了。
如何使用如下:
using (IdentityScope iss = new IdentityScope(targetLoginName, targetPassword,targetIP)) { //你的代码 }
- C#怎么访问共享目录
- C#发布访问共享目录
- Mac 怎么访问window共享目录
- C#访问共享目录与Word.ApplicationClass发生冲突的解决办法
- C#访问远程服务器共享目录下载文件到本地
- C#访问共享目录 得到共享目录文件列表和修改里面的文件
- java访问共享目录
- linux访问共享目录
- java访问共享目录
- C#读写共享目录
- Asp.net 访问 共享目录
- Linux 访问 Windows共享目录
- java远程访问共享目录
- ubuntu访问windows共享目录
- Ubuntu访问Windows共享目录
- JAVA远程访问共享目录
- JAVA远程访问共享目录
- Asp.net 访问 共享目录
- 判断一个单链表是否有环及环的链接点
- day3 test05
- 编译型语言和解释型语言
- java中的数字格式化
- 最后的审判
- C#怎么访问共享目录
- phpcms生成验证码
- 第八次上机报告
- VC++双缓冲,文字出现倒立现象怎么解决?
- 遥感学习2
- centos环境下QT5的下载和安装
- .NET 常用表单验证方法
- 那一夜,在泰坦尼克号上的基督徒们…
- 第一次面试