我遇到的问题是我的客户已在运行应用程序appA。然后他们转到桌面(不杀死appA),并通过使用PowerShell运行appA.ps1来升级版本的应用程序。之后,在安装后点击appA - > get an exception
。我想根本原因是另一个实例正在运行。
我的问题是如何检查我的应用程序是否已在运行?我可以杀了吗?
另外,我的应用程序是windows 8 store,c#。
答案 0 :(得分:3)
如果您想让当前实例保持运行并杀死应用程序的所有其他实例,则可以执行此操作
// get current process
Process current = Process.GetCurrentProcess();
// get all the processes with currnent process name
Process[] processes = Process.GetProcessesByName(current.ProcessName);
foreach (Process process in processes)
{
//Ignore the current process
if (process.Id != current.Id)
{
process.Kill();
}
}
使用命名空间System.Diagnostics;
答案 1 :(得分:0)
来自Social MSDN:
所有Metro风格的应用程序都在高度沙盒化的环境中工作,无法直接启动外部应用程序。
您无法访问Windows应用进程。不幸的是,您无法检查是否正在运行Windows应用程序。
到目前为止,我没有找到另一种方式。
没有Metro风格的应用
首先,您需要以下流程:
var processes = Process.GetProcessesByName("your application name")
检查您的程序是否已在运行:
var isRunning = processes.Length > 1;
然后循环遍历它们并关闭进程:
foreach (var process in processes)
{
process.CloseMainWindow();
// OR more aggressive:
process.Kill();
}