当前位置:主页   - 电脑 - 网站开发 - ASP.Net
asp.net 局域网存放文件
来源:网络   作者:   更新时间:
收藏此页】    【字号    】    【打印】    【关闭

 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、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明