C# 通过网站运行ffmpeg
我有一个网站,它允许用户下载图像作为视频剪辑 他们可以从mp4、avi、ogg等中进行选择 我通过C#/Asp.net 4.0中的Process类使用ffmpeg来执行转换工具 我在测试中注意到,如果我强制中止此转换(如停止IIS,在task manager中结束wp3进程),那么在执行此操作一段时间后,如果我查看Web服务器上的task manager,则有许多FFMPEG实例未正确关闭 理想情况下,我想做的是杀死可能会对该特定用户(而不是任何其他用户/会话)造成延迟的任何进程,然后启动转换工具 是否可以管理/控制该用户/会话的FFMPEG过程,或者我是否应该查看一个队列系统,该系统一次只允许一个用户使用该转换工具 我希望我说得很清楚 我可以发布代码来说明进程/ffmpeg是如何在C#中启动的,但我看不出这对这个问题有什么帮助 谢谢希望这有帮助:C# 通过网站运行ffmpeg,c#,asp.net,ffmpeg,C#,Asp.net,Ffmpeg,我有一个网站,它允许用户下载图像作为视频剪辑 他们可以从mp4、avi、ogg等中进行选择 我通过C#/Asp.net 4.0中的Process类使用ffmpeg来执行转换工具 我在测试中注意到,如果我强制中止此转换(如停止IIS,在task manager中结束wp3进程),那么在执行此操作一段时间后,如果我查看Web服务器上的task manager,则有许多FFMPEG实例未正确关闭 理想情况下,我想做的是杀死可能会对该特定用户(而不是任何其他用户/会话)造成延迟的任何进程,然后启动转换工
private void killProcess(String processName, String processOwner)
{
foreach (var process in Process.GetProcessesByName(processName))
{
if(GetProcessOwner(processName).equals(processOwner))
{
process.Kill();
}
}
}
public string GetProcessOwner(string processName)
{
string query = "Select * from Win32_Process Where Name = \"" + processName + "\"";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection processList = searcher.Get();
foreach (ManagementObject obj in processList)
{
string[] argList = new string[] { string.Empty, string.Empty };
int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
if (returnVal == 0)
{
// return DOMAIN\user
string owner = argList[1] + "\\" + argList[0];
return owner;
}
}
return "NO OWNER";
}
您好,很遗憾,processOwner是只读的,并且没有设置为会话ID级别。谢谢你的时间。我做了一点调查:只有当你以管理员的身份运行代码时,它才有效。仅为确保答案完整性:右键单击调试文件夹中的appName.exe并以管理员身份运行。我相信你知道这一点。所有打包软件(如高级安装程序)都可以选择始终以管理员身份运行。