有沒有辦法獲得正在運行的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. 如何獲取可執行文件路徑?
- 2. 獲取主可執行文件.jar文件的目錄路徑
- 3. 如何獲取當前文件中可執行文件的路徑?
- 4. 修改Windows服務的「可執行文件路徑」
- 5. 安裝德爾福服務的可執行文件的路徑
- 6. Windows服務 - 在「可執行文件路徑」中提供參數
- 7. 獲取Python的可執行文件路徑
- 8. 以系統本機形式獲取可執行文件路徑
- 9. (多操作系統)獲取可執行文件路徑
- 10. 從C++獲取python可執行文件的完整路徑
- 11. 如何從servlet獲取JSP的服務器文件路徑?
- 12. 獲取運行VBScript文件的完整服務器路徑
- 13. 如何獲取物理路徑的服務器路徑?
- 14. 任務管理器如何獲取進程的命令行可執行路徑?
- 15. 如何獲取Adobe Reader完整路徑(包括可執行文件名稱)?
- 16. 如何在VB中獲取當前可執行文件的完整路徑?
- 17. 如何僅獲取當前可執行文件路徑的目錄部分?
- 18. Python - 如何從服務器讀取路徑文件/文件夾
- 19. 可執行文件找不到路徑
- 20. 可執行文件的路徑
- 21. Ruby popen和可執行文件路徑?
- 22. NativeProcessStartupInfo可執行文件,絕對路徑
- 23. 我如何可以提取「路徑可執行文件」的所有服務的使用PowerShell
- 24. 如何在Azure服務結構中獲取文件的文件路徑
- 25. 如何獲取ftp服務器中文件或文件夾的路徑?
- 26. 可執行路徑
- 27. 獲取可執行文件
- 28. 我如何從CXF REST服務類獲取上下文路徑
- 29. 獲取POCO服務可執行文件夾
- 30. HAXE(hxcpp) - 相對於可執行文件路徑路徑
閱讀表單註冊表需要管理員執行級別的特權。不是嗎? – mrtaikandi 2009-06-25 18:05:21
儘管這不是獲取這些信息的理想方式,但我已經回到了上述類似的位置,但只做了一些修改。需要進行測試以瞭解UAC提示,但幾乎所有用戶都可以毫無阻礙地查詢註冊表的這一部分。 – Saxar 2015-07-18 02:25:45