在C#中,如何获得一个进程的路径?

2024-11-28 09:23:58
推荐回答(3个)
回答1:

因为这个文件同时被两个或两个以上进程调用,所以就出现这种情况,因此我建议在访问这个文件的时候最好能加入一个锁,当文件监视完之后再释放这个锁,这样就可以避免这种问题出现。

回答2:

如果是进程,就可以:
foreach (Process prc in Process.GetProcesses())
{
string s = prc .MainModule.FileName;
//or prc.Modules[0].FileName;
}

如果在进程中找不到的服务,就只有WMI了:
public static bool UnInstallService(string svcName)
{
string s = "Win32_service";
using (ManagementClass mClass = new ManagementClass(s))
{
using (ManagementObjectCollection moc = mClass.GetInstances())
{
foreach (ManagementObject mo in moc)
{
if (mo["Name"].ToString().Trim().ToUpper() == svcName.ToUpper())
{
string s=mo["PathName"].ToString()

回答3:

参考:

///


/// 获取应用程序的实例,没有其它的例程,返回Null
///

///
public static Process GetRunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName(current.ProcessName);
//遍历正在有相同名字运行的例程
foreach (Process process in processes)
{
//忽略现有的例程
if (process.Id != current.Id)
//确保例程从EXE文件运行
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
//返回另一个例程实例
return process;
}
return null;
}