草庐IT

c# - 如何判断进程ID是否存在

我正在使用C#.NET2.0。我需要确定PID是否存在。我想出了以下代码:privateboolProcessExists(intiProcessID){foreach(ProcesspinProcess.GetProcesses()){if(p.Id==iProcessID){returntrue;}}returnfalse;}除了迭代所有进程之外,还有更好的方法吗? 最佳答案 快速说明:您永远无法确定除您自己之外的进程是否正在运行。您只能说它在最近的某个时间点运行过。进程可以在任何给定时刻简单地停止存在,包括您检查它是否具有匹配

c# - process.standardoutput.ReadToEnd() 总是空的?

我正在启动一个控制台应用程序,但是当我重定向标准输出时,我总是什么也得不到!当我不重定向它,并将CreateNoWindow设置为false时,我在控制台中正确地看到了所有内容,但是当我重定向它时,StandardOutput。ReadToEnd()始终返回一个空字符串。Processcproc=newProcess();cproc.StartInfo.CreateNoWindow=true;cproc.StartInfo.FileName=Dest;cproc.StartInfo.RedirectStandardOutput=true;cproc.StartInfo.WindowSt

c# - 我怎样才能开始一个新的流程并等到它完成?

我想用C#启动一个程序(可以使用Process.Start())。然后我的程序应该等到启动的程序关闭,然后再继续。我该怎么做? 最佳答案 在调用Start()后添加:Process.WaitForExit()varmyProcess=newProcess{StartInfo=newProcessStartInfo(processPath)};myProcess.Start().WaitForExit(); 关于c#-我怎样才能开始一个新的流程并等到它完成?,我们在StackOverflo

c# - 当由一组信用下的计划任务启动的进程在另一组信用下运行另一个程序时,Windows 是否有限制

所以我有一个简单的例子,我有一个应用程序A,它有一些硬编码的用户X的凭据,一个本地管理员,然后它使用硬编码的绝对路径使用这些凭据启动应用程序B。A和B以及dotnet控制台应用程序,但是它们不与控制台交互,只是将信息写入文件。当我以交互方式运行A时(在我的Creds下,通过双击或通过CMD.exe或交互式PowerShellsession,它运行良好。成功调用B当我通过计划任务运行它时,A被creds控制,并使用用户X调用B,Process.Start(mystartinfo)的错误代码是-1073741502或十六进制的0xC0000142,表示“应用程序未能正确初始化”但是,如果我

c# - 从 Windows 服务创建交互式提升进程并显示给登录用户

我有一个在用户登录时生成WPF应用程序进程的服务。但出于某种原因,WPF应用程序在创建后大约10分钟就被终止了?立即终止,事件日志中未发现任何痕迹,WPF应用程序中也未调用任何正常的关闭/退出事件。事实上,当终止发生时,Windows7似乎挂起一秒钟,鼠标变得无响应,然后在短暂的延迟后执行鼠标手势(当它正常化时,但现在缺少创建的进程)。什么时候publicpartialclassService1:ServiceBase{publicService1(){InitializeComponent();CanHandleSessionChangeEvent=true;}protectedov

c# - 在 C# 中运行程序时,所有消息都转到标准输出,但标准错误不包含任何内容

我的问题与theoneidentified不同.显然我已经调用了“BeginErrorReadLine”方法(我在下面的代码中标记了它)。我想解析Handle产生的结果命令行当在命令行环境中运行时,它会输出如下内容:>handle64-p[PID] Nthandlev4.11-HandleviewerCopyright(C)1997-2017MarkRussinovichSysinternals-www.sysinternals.com   10:File     C:\Windows  1C:File     C:\Windows\SysWOW64[PID]是任何正在运行的进程ID输

c# - 当 UAC 被拒绝时,Process.Start 永远不会返回

我有一个更新程序exe,用于关闭主exe,用更新的exe替换它,然后启动更新的exe。当更新程序尝试启动更新的exe时,如果UAC权限对话框被用户拒绝,更新程序将挂起。这是因为Process.Start()函数永远不会返回。顺便说一下,我的CPU周期表显示几乎没有使用。我希望我所有的用户都对UAC说"is",但既然我在这里,我想至少用某种错误消息来处理这种情况。假设我的用户至少拥有Windows7。exe本身是32位Winforms应用程序。目标.NetFramework是4.0。使用VisualStudio2010Ultimate。关于如何检测我的用户何时拒绝UAC对话框的任何想法?

c# - C# 中的 Process 和 ProcessStartInfo 有什么区别?

Process和ProcessStartInfo有什么区别?我用过这两种方法来启动外部程序,但必须有一个原因有两种方法可以做到这一点。这里有两个例子。ProcessnotePad=newProcess();notePad.StartInfo.FileName="notepad.exe";notePad.StartInfo.Arguments="ProcessStart.cs";notePad.Start();和ProcessStartInfostartInfo=newProcessStartInfo();startInfo.FileName="notepad.exe";startInf

c# - 升级 .NET Framework 后 VS2010 出现 "Unable to step. Process is not synchronized"错误

我在Windows7桌面上安装了VisualStudio2010,主要用于调试ASP.NET解决方案。一切都运行良好,直到其中一个Windows更新安装了新版本的.NETFramework。现在,当我尝试放置断点然后在我的C#代码中执行“调试器步骤”时,我收到以下消息:更糟糕的是,它不会一直发生。我试图找到任何模式,但我能描述的最好方式是零星的。知道如何解决这个问题吗? 最佳答案 我刚在VisualStudio2015中得到这个。我在一个单独的线程上调试,遇到断点但无法继续。重新启动并没有解决它。我删除了所有断点,重置了我真正想要的

C#.Net : Why is my Process. Start() 挂起?

我正在尝试以另一个用户的身份从我的网络应用程序运行批处理文件。由于某种原因,批处理文件挂起!我可以在任务管理器中看到“cmd.exe”在运行,但它永远坐在那里,无法被杀死,批处理文件也没有运行。这是我的代码:SecureStringpassword=newSecureString();foreach(charcin"mypassword".ToCharArray())password.AppendChar(c);ProcessStartInfopsi=newProcessStartInfo();psi.WorkingDirectory=@"c:\build";psi.FileName=