有没有办法获得正在运行的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