有沒有辦法獲得正在運行的Windows服務的可執行文件路徑而不需要.Net中的管理員執行級別特權? (不會導致UAC來獲得用戶的確認)如何獲取服務可執行文件路徑
1
A
回答
4
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
1
嘗試從註冊表獲取:
using Microsoft.Win32;
.
.
.
RegistryKey hklm = Registry.LocalMachine;
hklm = hklm.OpenSubKey(@"System\CurrentControlSet\Services\SERVICE_NAME");
string servicePath = hklm.GetValue("ImagePath");
8
下面是一個使用WMI一個可能的解決方案:
using System.Management;
String query = String.Format("SELECT PathName FROM Win32_Service WHERE Name = '{0}'", serviceName);
using (ManagementObjectSearcher mos = new ManagementObjectSearcher(query)) {
foreach(ManagementObject mo in mos.Get())
Console.WriteLine(mo["PathName"].ToString());
}
確保包裹ManagementObjectSearcher
在using
因爲它是一種資源,需要妥善處置。
我不確定這是否需要提升權限才能運行,但確實需要在機器上安裝並運行WMI。要檢查WMI是否正在運行,請打開服務管理單元並查找Windows Management Instrumentation。您也可以通過從命令行運行net start winmgmt
來啓用它。
相關問題
- 1. 修改Windows服務的「可執行文件路徑」
- 2. Windows服務 - 在「可執行文件路徑」中提供參數
- 3. 從C++獲取python可執行文件的完整路徑
- 4. 如何從servlet獲取JSP的服務器文件路徑?
- 5. 如何獲取node.js中$ PATH中的可執行文件的完整路徑?
- 6. 如何僅獲取當前可執行文件路徑的目錄部分?
- 7. Python - 如何從服務器讀取路徑文件/文件夾
- 8. 可執行文件的路徑
- 9. NativeProcessStartupInfo可執行文件,絕對路徑
- 10. 如何在Azure服務結構中獲取文件的文件路徑
- 11. 如何獲取ftp服務器中文件或文件夾的路徑?
- 12. 可執行路徑
- 13. 獲取可執行文件
- 14. 獲取POCO服務可執行文件夾
- 15. C#:如何獲得Process.Start在給定文件時沒有路徑時將使用的可執行文件路徑?
- 16. 如何從URI獲取文件路徑?
- 17. 如何獲取CalCalendarItem的文件路徑?
- 18. 如何從路徑獲取文件名?
- 19. 如何獲取py文件的路徑?
- 20. 如何從文件URL獲取路徑?
- 21. 安全地獲取在Windows API中運行可執行文件的路徑
- 22. 如何刪除可執行文件路徑錯誤
- 23. 如何找出路徑是否導致可執行文件?
- 24. 如何使用install4j查找系統可執行文件路徑?
- 25. Bash:如何搜索路徑中的可執行文件?
- 26. 有文件路徑如何檢查它是否可執行?
- 27. 如何檢查可執行文件的路徑擴展
- 28. 獲取執行路徑 - 我從哪裏啓動jar文件
- 29. 從已安裝的包中獲取執行文件的路徑?
- 30. 在執行項目c中獲取文件的路徑#
閱讀表單註冊表需要管理員執行級別的特權。不是嗎? – mrtaikandi 2009-06-25 18:05:21
儘管這不是獲取這些信息的理想方式,但我已經回到了上述類似的位置,但只做了一些修改。需要進行測試以瞭解UAC提示,但幾乎所有用戶都可以毫無阻礙地查詢註冊表的這一部分。 – Saxar 2015-07-18 02:25:45