如何在c#程序中模拟域帐户进行登录操作

来源:互联网 发布:java 函数 和类 编辑:程序博客网 时间:2024/06/07 00:31

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.IO;

namespace CommonLibrary
{
    public static class WinLogonHelper
    {
        /// <summary> 
        /// 模拟windows登录域
        /// </summary> 
        [DllImport("advapi32.DLL", SetLastError = true)]
        public static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
    }

    public class TestLogin
    {
        public static void main()
        {
            IntPtr admin_token = default(IntPtr);
            WindowsIdentity wid_admin = null;
            WindowsImpersonationContext wic = null;

            //在程序中模拟域帐户登录 
            if (WinLogonHelper.LogonUser("user", "domainName", "pwd", 9, 0, ref admin_token) != 0)
            {
                using (wid_admin = new WindowsIdentity(admin_token))
                {
                    using (wic = wid_admin.Impersonate())
                    {
                        //假定要操作的文件路径是.0.250.上的d:/txt.txt文件可以这样操作 
                        FileInfo file = new FileInfo(@"//aaa/d$/a.dll");
                        //想做什么操作就可以做了                          
                    }
                }
            }
        }
    }
}

// 模拟域帐户之后,就有了模拟用户的权限,这里千万要注意安全!