1. 程式人生 > >如何在c#程式中模擬域帳戶進行登入操作 (轉載)

如何在c#程式中模擬域帳戶進行登入操作 (轉載)

程式碼加註釋,由於在.NET Core中也是支援PInvoke呼叫Win32庫的,所以下面的程式碼也適用於.NET Core程式:

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.Principal;


namespace NetCorePrincipal
{
    internal 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); } class Program { static void Main(string
[] args) { IntPtr admin_token = default(IntPtr); WindowsIdentity wid_admin = null; WindowsImpersonationContext wic = null; //在程式中模擬域帳戶登入 if (WinLogonHelper.LogonUser("uid", "serverdomain", "pwd", 9, 0, ref admin_token) != 0) {
using (wid_admin = new WindowsIdentity(admin_token)) { using (wic = wid_admin.Impersonate()) { //假定要操作的檔案路徑是10.0.250.11上的d:\txt.txt檔案可以這樣操作 FileInfo file = new FileInfo(@"\\10.0.250.11\d$\txt.txt"); //想做什麼操作就可以做了 } } } } } }

模擬域帳戶之後,就有了模擬使用者的許可權,這裡千萬要注意安全!

 

原文連結