[英]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.