asp.net 局域网存放文件

添加人:kuerhero零级(40分)   添加时间:2007-09-18    阅读次数:1894  收藏此教程
 1public 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    }
 
1页 第1上一页1下一页
相关的教程: VS2005 技巧 Asp.Net2.0
收藏此教程

当前平均分: 0.0(0 次打分)

-5-4-3-2-1012345
评论主题
您的大名
您的评论
验证码 点击换一个验证码
知识库搜索: