1
.net下模拟不同身份登陆以获取不同权限
2
3
作者:佚名 时间:2004-04-16 09:14 出处:互连网 责编:chinaitpower
4
5
摘要:.net下模拟不同身份登陆以获取不同权限
6
7
8
不管是asp.net、web service还是window service,程序运行的时候只有本地计算机的部分权限,有时候需要更大的权限,比如读写某台服务器或域中的一台计算机上的文件等,这就需要更大的权限,比如域帐户权限。
9
10
通过获取不同身份的WindowsImpersonationContext对象,可以模拟不同用户登陆,请看我生成的NetworkSecurity类的
11
public static WindowsImpersonationContext ImpersonateUser(string strDomain,
12
string strLogin,
13
14
string strPwd,
15
16
LogonType logonType,
17
18
LogonProvider logonProvider);
19
20
附NetworkSecurity.cs源代码如下:
21
22
<%@ Page Language="C#"%>
<%@ Import Namespace = "System.Web" %>
<%@ Import Namespace = "System.Web.Security" %>
<%@ Import Namespace = "System.Security.Principal" %>
<%@ Import Namespace = "System.Runtime.InteropServices" %>

<script runat=server>
public const int LOGON32_LOGON_INTERACTIVE = 2;
public const int LOGON32_PROVIDER_DEFAULT = 0;

WindowsImpersonationContext impersonationContext;

[DllImport("advapi32.dll")]
public static extern int LogonUserA(String lpszUserName,
String lpszDomain,
String lpszPassword,
int dwLogonType,
int dwLogonProvider,
ref IntPtr phToken);
[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern int DuplicateToken(IntPtr hToken,
int impersonationLevel,
ref IntPtr hNewToken);

[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool RevertToSelf();

[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
public static extern bool CloseHandle(IntPtr handle);

public void Page_Load(Object s, EventArgs e)
>
相关文章:
-
2021-05-23
-
2022-12-23
-
2021-09-24
-
2021-08-26
-
2022-12-23
-
2022-12-23
-
2021-05-09
猜你喜欢
-
2022-12-23
-
2022-12-23
-
2022-12-23
-
2021-04-11
-
2022-12-23
-
2021-09-04
-
2021-05-04
相关资源
-
下载
2022-12-15
-
下载
2021-06-07
-
下载
2023-01-22
-
下载
2021-06-24