我有一個內置TCP/IP服務器的Windows服務。客戶端和連接以及一些信息是分佈式的等。通常,服務被安裝爲以網絡服務登錄。如何將服務SID添加到服務?
有一些數據存儲在ProgramData下的文件夾中,因此安裝期間將該文件夾的讀/寫權限授予該服務。但是,訪問通常因此被授予使用網絡服務帳戶的所有服務。我知道可以通過SERVICE_CONFIG_SERVICE_SID_INFO使用ChangeServiceConfig2添加特定的服務SID。然而,從那裏開始並不清楚如何繼續,如果這甚至解決了我的問題。
任何幫助將不勝感激!
這稱爲服務隔離。指定[SERVICE_SID_TYPE_UNRESTRICTED](http://msdn.microsoft.com/en-us/library/windows/desktop/ms685987(v = vs.85).aspx)作爲SID類型指示SCM將服務SID添加到服務的流程令牌,從而允許服務訪問您可能已配置爲僅允許訪問您的特定服務的資源。 – sergmat
謝謝您的評論! - 我是新來的;爲什麼它不是答案? 因此,據我瞭解,SCM在服務啓動時將特定服務SID添加到進程。我可以使用SID的名稱'NT SERVICE \'來構造一個SID數據結構。 有些事情還不清楚: 1)我可以在服務啓動之前使用SID嗎?即我可以授予此SID對特定文件夾的訪問權嗎? 2)當我配置服務登錄內置網絡服務時,它是否仍繼承該帳戶的權限? –
SpaghettiCook
1)爲什麼不呢? 2)是3)服務SID被實施爲組SID中用於承載服務的任何進程的部分令牌。 – sergmat