簡體   English   中英

如何使用 c# 以編程方式安裝系統服務以使用組托管服務帳戶 (gMSA)?

[英]How can I programmatically install a system service using c# to use a Group Managed Service Account (gMSA)?

我正在新環境中部署我公司的系統,IT 團隊給了我一個服務帳戶列表,用於我們的每個系統服務。 但是,他們告訴我這些帳戶是組托管服務帳戶(簡稱 gMSA),並且沒有密碼,因為它們由“密鑰分發服務”管理。

我之前沒有使用過 gMSA,但我們安裝程序的源代碼非常簡單,但由於缺少密碼而無法使用。

var process = new ServiceProcessInstaller() {
    Account = ServiceAccount.User,
    Username = <username>,
    Password = <password>,
};
var service = new ServiceInstaller() {
    ServiceName = <code_name>,
    DisplayName = <pretty_name>,
};
service.ServicesDependedOn = <dependencies>;
service.StartType = ServiceStartMode.Automatic;
service.DelayedAutoStart = true;

Installers.Add(process);
Installers.Add(service);
base.Install(stateSaver);

在未提供密碼的情況下,如何修改我的服務安裝程序以使用 gMSA。 我(或其他具有管理員權限的用戶)將手動安裝服務。

我能夠解決這個問題; 有幾件事我需要改變。

首先,帳戶的用戶名需要以$為后綴,因此不是domain\\sysuser而是domain\\sysuser$

接下來,我必須使用null而不是string.Empty作為密碼。

@Alex 對我不起作用 - 使用基本 ServiceProcessInstaller 類,如果密碼為 null 或 string.Empty,它會提示輸入用戶名和密碼。 深入研究 ServiceProcessInstaller 源代碼,如果您將密碼設置為 null,它會提示輸入密碼(或者如果在 /unattended 模式下運行則拋出異常)。

我已經在用戶名末尾包含了 $。 你還需要做什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM