iT邦幫忙

0

如何在 Windows Service 啟動時不用輸入 user 帳號密碼即可啟動?

我在寫 Windows Service 需要撈 AD 帳號,
如果 this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.User;
當服務啟動時就需要輸入使用者帳號密碼;如果設定為 NetworkService、LocalService、LocalSystem 就會抓不到 user 的 AD 帳號。

請問有什麼方式可以讓服務安裝時不需輸入使用者 AD,服務就能啟動?
還是有其他方式可以讓 Service 抓到 user 登入時的帳號?

感謝大家!!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
zero
iT邦好手 1 級 ‧ 2020-03-31 11:59:37

偷懶方式

自己敲帳密,讓服務記住啟動帳戶


正規方式

1.Windows Server 2008 以上

2.要有AD

3.Net Framework 3.5或更高版本

4.要有KDS服務或者網域有建立CA服務

5.建立GMSA帳戶

6.設定服務使用GMSA帳戶

0
JamesDoge
iT邦高手 1 級 ‧ 2023-01-11 04:36:03

請問有什麼方式可以讓服務安裝時不需輸入使用者 AD,服務就能啟動?

試試使用 LocalSystem 帳號啟動服務,因為 LocalSystem 帳號通常具有較高的系統權限。

class MyService : ServiceBase
{
    protected override void OnStart(string[] args)
    {
        //將服務的帳號設定為 LocalSystem
        serviceProcessInstaller1.Account = ServiceAccount.LocalSystem;
        
        // 取得目前登入使用者的帳號
        string username = WindowsIdentity.GetCurrent().Name;

        // 取得使用者的 Active Directory 資訊
        using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
        {
            UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username);
            Console.WriteLine("Username: " + user.SamAccountName);
            Console.WriteLine("Email: " + user.EmailAddress);
            Console.WriteLine("Department: " + user.Department);
        }
    }
}

我要發表回答

立即登入回答