asp.net访问网络路径方法(模拟用户登录)
2015-01-24信息快讯网
这篇文章主要介绍了asp.net访问网络路径方法,其实就是模拟用户登录,需要的朋友可以参考下
核心代码:
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;//域ò控?中D的?需è要a用?:Interactive = 2
private bool disposed;
/// <summary>
/// 登?录?
/// </summary>
/// <param name="sUsername">用?户§名?</param>
/// <param name="sDomain">域ò名?,?如?果?不?在ú域ò中D就í使1用?机ú器÷IP地?址・</param>
/// <param name="sPassword">密ü码?</param>
public IdentityScope(string sUsername, string sDomain, string sPassword)
{
// 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);
}
}第二个参数是域名,有域名的话写域名,没有域名写目标机器的IP就可以了
using (IdentityScope c = new IdentityScope("administrator", "192.168.0.1", "11111"))
{
string[] filelist = System.IO.Directory.GetDirectories(@"\\192.168.0.1\folderName");
}php启用sphinx全文搜索的实现方法
php进行支付宝开发中return_url和notify_url的区别分析
腾讯微博提示missing parameter errorcode 102 错误的解决方法
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
php提示Warning:mysql_fetch_array() expects的解决方法
php中get_meta_tags()、CURL与user-agent用法分析
php使用pdo连接报错Connection failed SQLSTATE的解决方法
PHP缓存集成库phpFastCache用法
thinkphp文件处理类Dir.class.php的用法分析
Yii核心组件AssetManager原理分析
PHP中__FILE__、dirname与basename用法实例分析
ThinkPHP模板输出display用法分析
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
php中current、next与reset函数用法实例
PHP之sprintf函数用法详解
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
php中spl_autoload详解
跟我学Laravel之视图 & Response
php 模拟 asp.net webFrom 按钮提交事件实例
学习php中的正则表达式
php实现的DateDiff和DateAdd时间函数代码分享
PHP JSON出错:Cannot use object of type stdClass as array解决方法
php socket实现的聊天室代码分享
php与flash as3 socket通信传送文件实现代码
getJSON跨域SyntaxError问题分析
PHP+FastCGI+Nginx配置PHP运行环境
PHP的反射类ReflectionClass、ReflectionMethod使用实例
YII中assets的使用示例
VB中的RasEnumConnections函数返回632错误解决方法
PHP中unset,array_splice删除数组中元素的区别
PHP关于htmlspecialchars、strip_tags、addslashes的解释
ThinkPHP模板判断输出Defined标签用法详解
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
PHP微框架Dispatch简介
PHP命名空间(Namespace)简明教程
PHP中spl_autoload_register()和__autoload()区别分析