gpt4 book ai didi

c# - Process.Start和手动运行exe的区别

转载 作者:行者123 更新时间:2023-11-30 17:54:00 25 4
gpt4 key购买 nike

大图:我写了一个 Autodesk inventor 插件。在 Inventor 的关闭事件中,它会启动另一个程序,我称之为 purgeworkspace.exe。 purgeworkspace.exe 等到 Inventor 关闭,然后删除 Inventor 正在使用的文件。

这是调用 purgeworkspace.exe 的相关插件代码。

//Run as admin
if (System.Environment.OSVersion.Version.Major >= 6)
{
Process p = Process.Start(Properties.Settings.Default.exePath);
p.StartInfo.Verb = "runas";
}

如果从插件启动 purgeworkspace.exe,我会收到一个 IOException,说明文件正在使用中。但是,如果我通过双击 exe 手动运行 purgeworkspace.exe,它每次都能完美运行。我相信这是由于权限,但我不知道是什么。如您所见,我已经在尝试以管理员身份运行我的 exe,但这并没有解决问题。

当我手动启动 purgeworkspace.exe 时,它​​的工作方式完全符合我的预期。我如何以编程方式调用它以使其以相同的方式运行?

编辑:下面是一些代码来演示 purgeworkspace 如何等待 inventor。请记住,此代码在我手动启动时和从 Inventor 插件运行时都会运行。

static void Main()
{
while (IsProcessOpen("Inventor"))
{
System.Threading.Thread.Sleep(50);
}
}

private static bool IsProcessOpen(string name)
{
return Process.GetProcesses().Any(clsProcess => clsProcess.ProcessName.Contains(name));
}

最佳答案

无论采取何种预防措施,您的文件中仍然存在某些东西。也许具有打开文件句柄的进程的名称不像“Inventor”?

你可以使用 this question弄清楚这一点。

关于c# - Process.Start和手动运行exe的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16401318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com