Tag: 进程

如何获取process.MainModule的FileName?

Process[] processlist = Process.GetProcesses(); foreach (Process proc in processlist) { Console.Write(proc.MainModule.FileName); } 它给Win32Exception was unhandled access denied如何解决这个问题? 我尝试将它作为adm运行,但它得到相同的错误。 提前致谢!

无论是32位还是64位,如何杀死进程?

在我的工具中某个时刻,我想用它的名字来杀死一个进程。 我现在正在测试Win7 64位,但我收到的错误是: 32位进程无法访问64位进程的模块 码: Process[] runningProcesses = Process.GetProcesses(); foreach (Process process in runningProcesses) { // now check the modules of the process foreach (ProcessModule module in process.Modules) { if (module.FileName.Equals(“communicator.exe”)) { process.Kill(); } } } 我将不得不在许多计算机(WinXP 32/64,Win7 32/64,Win8 64)上使用此工具,我需要此工具来处理这两种类型的体系结构。 怎么做到这一点?

使用process.waitforexit()时线程被中止错误

我在下面的代码是从while循环调用的,所以它连续多次执行。 有时,但并不总是,我最终得到一个线程是在p.WaitforExit()上被中止错误。 有没有人对此有任何见解? 我应该在p.WaitForExit之后调用p.Close()吗? string outputFileName = Path.Combine(Path.GetDirectoryName(recordingFileName), Guid.NewGuid() + “.mpg”); ProcessStartInfo startInfo = new ProcessStartInfo(ffmpegfileName); startInfo.Arguments = “-i \”” + recordingFileName + “\” -r 30 -sameq \”” + outputFileName + “\””; startInfo.WindowStyle = ProcessWindowStyle.Hidden; Process p = Process.Start(startInfo); p.WaitForExit(); if (p.ExitCode != 0) { throw new Exception(“exited with an exit code of ” + […]

C#Windows窗体被任务管理器杀死…有没有办法运行关机function?

我怀疑这甚至是可能的。 所以你的应用程序正在运行,用户决定通过任务管理器结束进程。 在process.kill期间是否有方法/操作来保存数据? 我怀疑有,但我不得不问。 此外,如果用户关闭/重新启动PC(如在Windows更新/手动重启中),应用程序将执行什么操作? Window_Unloaded? 在第二个问题上,我想找到一种方法来确保我的应用程序不会显示为“如果您想重新启动,杀死此应用程序”的情况并希望保存所需的数据。 你的两分钱非常感谢!

C#Process.Start参数被截断

传递非常长的文件路径时,我有截断的参数。 我需要启动一个程序并通过命令参数传递它 – 有时它只是截断命令。 它是全局的 – 因此它不仅是每个参数的问题,而且是整个问题。 编辑:问题可能是命令行长度的限制,正如monkey_p所说。 问题是:如何绕过它? (更改工作目录不会因为文件可以存在于不同的位置)。

如何以相同的C#解决方案从“StartUp”项目以编程方式启动第二个项目?

我有两个项目的C#VS 2012解决方案:ProjectA和ProjectB。 为简单起见,这两个项目都是控制台应用程序。 需要先启动ProjectA,然后将其设置为解决方案的“启动项目”。 当我在调试器下运行带有F5的ProjectA时,需要执行一些操作,之后它应该在同一个调试器下启动ProjectB。 因此,如果我在ProjectB的第一行设置断点,调试器应该会中断。 有什么方法可以做到这一点吗? 目前我使用Process.Start(“path_to_projectB.exe”)但需要替换为“Process.StartUnderSameDebugger(”path_to_projectB.exe“)”。 我想使用为ProjectB启动ProjectA的VS调试器的相同实例。 请注意,我不想在Visual Studio中使用“启动多个项目”选项。 如果我这样做,两个控制台应用程序同时启动(这是不需要的)和同一调试器(这是想要的)。 第一个进程必须执行一些东西才能启动第二个进程,这就是我不能使用这种方法的原因。 此外,当我稍后停止调试时,应关闭两个进程(来自ProjectA和ProjectB的控制台应用程序)。

在process.start()之前设置进程窗口大小和位置

我正在使用表单来启动新的Flash进程,使用Process.start()和MoveWindow()来resize并更改进程窗口位置。 问题是在调用MoveWindow()之前,您可以看到窗口的默认大小和位置一瞬间。 我想知道在实际进程开始之前是否有办法设置窗口的位置和大小。 Process flash = new Process(); flash.StartInfo.WindowStyle = ProcessWindowStyle.Normal; flash.StartInfo.FileName = “C:\\RED\\bin\\android.swf”; flash.Start(); Thread.Sleep(300); mainForm.MoveWindow(flash.MainWindowHandle, posX, 0, 1920, 1080, true);

按流程获取电池使用情况

我有一个代码(在c#中)用于管理我的计算机中的所有进程。 我使用PerformanceCounter类来查找在一个特定进程中链接的所有值。 例如,此代码重新启动了firefox的Processor Time用法: PerformanceCounter processorTime = new PerformanceCounter(“Process”, “% Processor Time”, “firefox”); double processTime = 0; while(true){ processTime = processorTime.NextValue(); } 另外,我知道如何检索电池的百分比: PowerStatus power = SystemInformation.PowerStatus; float secondsRemaining = power.BatteryLifePercent; if (secondsRemaining >= 0) { kpiBattery.batteryLevel = (secondsRemaining * 100).ToString(); } 我希望得到使用电池BY PROCESS,而不是全局。 对于样品,在使用“firefox”的过程中,有多少电池正在使用? 我知道我想在进程开始时和进程被杀死时获得电池电量,并且有所不同,但是,这不是真正的电池使用水平,因为在开始和结束时间过程之间,可能很多其他进程正在运行,并且也消耗电池。 如果您有任何想法,或者您知道解决方案,我会非常感兴趣。 谢谢。

如何检测当前登录用户的进程是否正在运行?

环境 – C#,。net 4.0,VS 2010 您好,我已经为Windows编写了一个简单的shell替代品。 用户登录时会自动启动shell。当用户退出shell时,会启动正常的Windows“explorer.exe”。 现在,当用户退出(并正确支持)时,我需要能够检查当前登录用户是否正在运行“explorer.exe”。 这可以防止代码再次不必要地启动它,从而导致“Windows资源管理器”应用程序窗口。 我已经看到了无数的如何检查并查看进程是否正在运行的示例…但没有看到它是否正在为当前登录用户运行。 下面的代码将检查“explorer.exe”是否已经在运行,如果不是,它将启动它。 但有些情况下,当不需要时,此代码将测试为正! 例如,使用快速用户切换时…另一个用户登录到计算机,因此,“explorer.exe”显示在进程列表中。 但是,当“explorer.exe”正在运行时,它不会为当前登录用户运行! 因此,当我的shell退出时,代码测试为正,并且“explorer.exe”未启动。 用户留下黑屏,没有shell! 那么,我如何修改下面的代码来测试当前登录用户是否正在运行“explorer.exe”? Process[] Processes = Process.GetProcessesByName(“explorer”); if (Processes.Length == 0) { string ExplorerShell = string.Format(“{0}\\{1}”, Environment.GetEnvironmentVariable(“WINDIR”), “explorer.exe”); System.Diagnostics.Process prcExplorerShell = new System.Diagnostics.Process(); prcExplorerShell.StartInfo.FileName = ExplorerShell; prcExplorerShell.StartInfo.UseShellExecute = true; prcExplorerShell.Start(); }

运行一个进程并获取“Windows保护您的PC”消息

我正在运行此代码,我得到“Windows保护您的PC”消息。 有没有办法告诉Windows这是一个安全的程序,并允许它继续? 该消息还指出“Windows SmartScreen阻止了无法识别的应用程序启动。运行此应用程序可能会使您的PC面临风险。” private void runProcess(string exeLocation) { var process = Process.Start(exeLocation) // I get error here process.WaitForExit(); }