我正在使用WiX安裝Windows服務。如何使服務在運行安裝程序的Windows用戶環境中運行?WiX ServiceInstall - 將服務設置爲以當前Windows用戶身份運行
回答
您需要同時擁有要運行該服務的用戶的帳戶名和密碼。我可以通過向我的安裝程序添加一個自定義用戶界面來請求用戶名和密碼,然後使用ServiceInsall元素上的帳戶和密碼屬性提供的值完成此操作。
請注意,用於運行服務的帳戶必須具有「登錄身份」服務特權。默認情況下,這不會授予用戶。我能夠使用UtilExtension架構中的用戶元素將此priveledge添加到用戶。如果運行安裝程序的用戶是管理員,則僅向用戶添加特權纔會成功。
這是我使用的代碼。 SERVICECREDENTIALS_USERLOGIN和SERVICECREDENTIALS_PASSWORD是從自定義用戶界面填充的屬性。
<Component Id="ServiceEXE" Guid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
<File Id="ServiceEXE" Name="YourService.exe" DiskId="1"
Source="path\to\YourService.exe" KeyPath="yes" />
<util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[SERVICECREDENTIALS_USERLOGIN]"
LogonAsService="yes" />
<ServiceInstall Id="ServiceInstall" Type="ownProcess" Vital="yes" Name="YourService"
DisplayName="Your Service" Description="Your Service description"
Start="auto" Account="[SERVICECREDENTIALS_USERLOGIN]" Password="[SERVICECREDENTIALS_PASSWORD]"
ErrorControl="normal" Interactive="no" />
<ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="YourService" Wait="yes" />
</Component>
你能幫我嗎?我如何擁有2個組件1用於SQL身份驗證,1個用於Windows身份驗證,即如何添加條件。 – 2011-09-14 10:25:17
此代碼是否可以工作?設置LogonAsService特權*和*服務標識似乎沒有按順序排列在生成的.msi包中。出於這個原因,安裝失敗...或者我錯過了什麼? – 2012-10-17 15:36:20
- 1. WIX ServiceInstall - 設置網絡服務下運行的服務帳戶
- 2. 以當前用戶身份從Windows服務運行進程
- 3. 以當前用戶身份運行IIS
- 4. 以LocalSystem身份運行的Windows服務,但需要以當前登錄的用戶身份啓動進程
- 5. 以用戶身份安裝Windows服務
- 6. 以UINavigationcontroller的root身份將當前的TabBarController視圖設置爲
- 7. 以當前登錄用戶身份運行
- 8. 在VBScript中以當前用戶的身份運行Outlook.EXE
- 9. 使用WiX安裝和運行.exe作爲Windows服務
- 10. 以專用用戶身份運行服務有什麼優勢
- 11. wix HeatDirectory ServiceInstall
- 12. 在wix安裝程序中以管理員身份啓動windows服務
- 13. 將php用戶更改爲以nginx用戶身份運行
- 14. 在啓動時以非root用戶身份設置服務
- 15. 當前windowsidentity與當前的請求用戶身份一樣windows身份驗證
- 16. 以非root用戶身份運行服務
- 17. Apache2服務器以特定用戶身份運行腳本
- 18. 如何以Windows服務的不同用戶身份運行進程
- 19. 設置窗口服務作爲當前用戶使用InstallUtil.exe安裝時運行
- 20. 如何在Windows上設置Oracle不以本地系統用戶身份運行
- 21. 如何安裝以管理員身份運行的Windows服務?
- 22. Windows服務:在以LocalSystem身份運行時偵聽套接字
- 23. ASP.Net Windows身份驗證 - 用戶身份登錄到服務器
- 24. 當以管理員身份運行時獲取當前登錄的用戶
- 25. wix serviceinstall目錄權限
- 26. 在Wix中創建ServiceInstall,以執行未知的前進路徑
- 27. Wix從運行的Windows服務獲取用戶
- 28. wix srvany.exe作爲服務未運行
- 29. 以非root用戶身份運行Nginx
- 30. 以非root用戶身份運行Docker
爲什麼要以當前用戶身份運行服務?服務的大部分要點是在沒有用戶登錄的情況下運行 - 並且能夠以LocalSystem的身份運行,以便於可執行文件的管理員權限。我相信你有一個很好的理由...... – 2009-10-02 04:26:36
你爲什麼要將它作爲特定用戶來運行的一個原因是它需要連接到SQL服務器,並且SQL服務器被配置爲使用Windows身份驗證......它更容易沒有將「本地服務」添加到SQL用戶列表中。 – 2010-09-07 08:37:06