在C#中,如何获得一个进程的路径?
3个回答
展开全部
因为这个文件同时被两个或两个以上进程调用,所以就出现这种情况,因此我建议在访问这个文件的时候最好能加入一个锁,当文件监视完之后再释放这个锁,这样就可以避免这种问题出现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-05-17
展开全部
如果是进程,就可以:
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()
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()
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-20
展开全部
参考:
/// <summary>
/// 获取应用程序的实例,没有其它的例程,返回Null
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 获取应用程序的实例,没有其它的例程,返回Null
/// </summary>
/// <returns></returns>
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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询