asp.net 局域网存放文件
1
public const int LOGON32_LOGON_INTERACTIVE = 2;
2
public const int LOGON32_PROVIDER_DEFAULT = 0;
3
4
WindowsImpersonationContext impersonationContext;
5
6
[DllImport("advapi32.dll", CharSet = CharSet.Auto)]
7
public static extern int LogonUser(String lpszUserName,
8
String lpszDomain,
9
String lpszPassword,
10
int dwLogonType,
11
int dwLogonProvider,
12
ref IntPtr phToken);
13
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
14
public extern static int DuplicateToken(IntPtr hToken,
15
int impersonationLevel,
16
ref IntPtr hNewToken);
17
18
19
private bool impersonateValidUser(String userName, String domain, String password)
20
{
21
22
IntPtr token = IntPtr.Zero;
23
IntPtr tokenDuplicate = IntPtr.Zero;
24
25
if (LogonUser(userName, domain, password, LOGON32_LOGON_INTERACTIVE,
26
LOGON32_PROVIDER_DEFAULT, ref token) != 0)
27
{
28
if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
29
{
30
WindowsIdentity tempWindowsIdentity;
31
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
32
impersonationContext = tempWindowsIdentity.Impersonate();
33
if (impersonationContext != null)
34
return true;
35
else
36
return false;
37
}
38
else
39
return false;
40
}
41
else
42
return false;
43
}
44
private void undoImpersonation()
45
{
46
impersonationContext.Undo();//回退为未更改前账户
47
}
48
49
protected void Button1_Click(object sender, EventArgs e)
50
{
51
//临时更改为 跟 网络硬盘相同用户名密码的账户(此账户必须在网络盘有写入权限)本机也需要同样帐号密码的帐户
52
53
if (impersonateValidUser("test", "192.168.18.203", "1111"))
54
{
55
//登陆后处理密码
56
if (!Directory.Exists(@"\192.168.18.203sp est"))
57
{
58
try
59
{
60
Directory.CreateDirectory(@"\192.168.18.203sp est");
61
}
62
catch (Exception e1)
63
{
64
Response.Write(e1.Message);
65
}
66
}
67
FileUpload1.SaveAs(@"\192.168.18.203sp estq.txt");
68
undoImpersonation();
69
}
70
else
71
{
72
Response.Write("登陆失败");
73
//失败后处理密码
74
}
75
}
当前平均分: 0.0(0 次打分)
-5-4-3-2-1012345