asp.net访问网络路径方法(模拟用户登录)
2023-06-13 09:15:43 时间
核心代码:
publicclassIdentityScope:IDisposable { //obtainsusertoken [DllImport("advapi32.dll",SetLastError=true)] staticexternboolLogonUser(stringpszUsername,stringpszDomain,stringpszPassword,intdwLogonType,intdwLogonProvider,refIntPtrphToken); //closesopenhandesreturnedbyLogonUser [DllImport("kernel32.dll",CharSet=CharSet.Auto)] externstaticboolCloseHandle(IntPtrhandle); [DllImport("Advapi32.DLL")] staticexternboolImpersonateLoggedOnUser(IntPtrhToken); [DllImport("Advapi32.DLL")] staticexternboolRevertToSelf(); constintLOGON32_PROVIDER_DEFAULT=0; constintLOGON32_LOGON_NEWCREDENTIALS=9;//域ò控?中D的?需è要a用?:Interactive=2 privatebooldisposed; ///<summary> ///登?录? ///</summary> ///<paramname="sUsername">用?户§名?</param> ///<paramname="sDomain">域ò名?,?如?果?不?在ú域ò中D就í使1用?机ú器÷IP地?址·</param> ///<paramname="sPassword">密ü码?</param> publicIdentityScope(stringsUsername,stringsDomain,stringsPassword) { //initializetokens IntPtrpExistingTokenHandle=newIntPtr(0); IntPtrpDuplicateTokenHandle=newIntPtr(0); try { //gethandletotoken boolbImpersonated=LogonUser(sUsername,sDomain,sPassword,LOGON32_LOGON_NEWCREDENTIALS,LOGON32_PROVIDER_DEFAULT,refpExistingTokenHandle); if(true==bImpersonated) { if(!ImpersonateLoggedOnUser(pExistingTokenHandle)) { intnErrorCode=Marshal.GetLastWin32Error(); thrownewException("ImpersonateLoggedOnUsererror;Code="+nErrorCode); } } else { intnErrorCode=Marshal.GetLastWin32Error(); thrownewException("LogonUsererror;Code="+nErrorCode); } } finally { //closehandle(s) if(pExistingTokenHandle!=IntPtr.Zero) CloseHandle(pExistingTokenHandle); if(pDuplicateTokenHandle!=IntPtr.Zero) CloseHandle(pDuplicateTokenHandle); } } protectedvirtualvoidDispose(booldisposing) { if(!disposed) { RevertToSelf(); disposed=true; } } publicvoidDispose() { Dispose(true); } }
第二个参数是域名,有域名的话写域名,没有域名写目标机器的IP就可以了
using(IdentityScopec=newIdentityScope("administrator","192.168.0.1","11111")) { string[]filelist=System.IO.Directory.GetDirectories(@"\\192.168.0.1\folderName"); }
相关文章
- 优雅地实现 ASP配置 Oracle 数据库(asp配置oracle)
- ASP.NET中文件上传下载方法集合
- ASP.NET技巧:数据岛出到Excel最为简易的方法
- 在ASP.NET中实现多文件上传的方法
- Asp.net弹出对话框基类(输出alet警告框)
- asp.net设置GridView的选中行
- asp.net结合YUI3.0小示例
- asp.net下利用js实现返回上一页的实现方法小集
- asp.Net中获取一周第一天,一月第一天等实现代码
- ASP.NET页面刷新的实现方法(包括html,js)
- asp.net(C#)中给控件添加客户端js事件的方法
- ASP.NET在IIS7中上下文中不可用的解决方法
- asp.net下ajax.ajaxMethod使用方法
- ASP.NET在IIS上注册报0x800702e4错误解决方法
- Asp.net中时间格式化的6种方法详细总结
- Asp.net清空控件值的方法(可自定义控件类型)
- 几种判断asp.net中session过期方法的比较
- 设置ASP.NET页面不被缓存(客户端/服务器端取消缓存方法)
- ASP.NET中实时图表的实现方法分享
- ASP.NET回发密码框清空问题处理方法
- ASP.NET使用application与session对象写的简单聊天室程序
- asp.net错误:0x8007000B异常的解决方法