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

 我来答
无方龙寒烟
2020-01-23 · TA获得超过1092个赞
知道小有建树答主
回答量:1625
采纳率:100%
帮助的人:8.9万
展开全部
因为这个文件同时被两个或两个以上进程调用,所以就出现这种情况,因此我建议在访问这个文件的时候最好能加入一个锁,当文件监视完之后再释放这个锁,这样就可以避免这种问题出现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于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()
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式