草庐IT

初识进程

全部标签

.net - 程序终止自身进程的正确方法是什么(Windows)

C#.NET3.5我有一个控制台应用程序正在被计算机上的另一个应用程序调用。此控制台应用程序持续运行,并从“父”进程的stdin上监听数据。但是,当父级停止或终止时,它启动的控制台应用程序会继续。在正常情况下,它会闲置等待来自标准输入的输入,使用最少的资源。然而,一旦父进程离开,这个控制台应用程序就会使CPU达到峰值,并使它运行的核心资源匮乏,利用率接近100%。这一直持续到我手动终止进程。理想情况下,调用父进程会自行清理,特别是因为这是在正常(非异常)“停止”条件下发生的。不幸的是,这个父进程不在我的手中。我的第一个想法是从控制台应用程序中获取调用父级,并监控其PID。如果父进程消失

windows - Delphi 7 写进程内存

这是我的工作代码DriftMul:=99;WriteProcessMemory(HandleWindow,ptr($4E709C),@DriftMul,2,Write);我想在不使用变量的情况下转换它,但它不会工作下面只是我想做的一个例子。WriteProcessMemory(HandleWindow,ptr($4E709C),ptr(99),2,Write);有谁知道使用变量来完成这项工作的方法吗???我可以用几种语言编程,我使用的每一种语言都是方法来做到这一点。我想这样做的原因是因为我要制作一个大程序,它会编写大量不同的值,它将为我节省大约300多行代码。下面是我使用的C++示例。

c# - 如何确保该进程仍在运行以便我可以杀死它?

我有一个进程,我想杀死;然而,有时这会产生InvalidOperationException,表示进程已经退出。为了防止异常,我尝试检查进程是否退出:if(!p.HasExited){p.Kill();}但是,我仍然偶尔会看到异常。由于该进程与我的代码并行运行,我假设问题本质上可能是竞争条件,即进程在检查和Kill()调用之间终止。在不引发上述异常的情况下终止进程的正确方法是什么?当然,我可以trycatch有问题的代码,但这似乎不是解决此问题的最佳方法。 最佳答案 你无法解决这个问题,因为有一个内置的竞争条件:当你调用p.HasE

windows - 复制 Windows XP 上正在运行的进程使用的 dll 是否安全?

这是在WindowsXP上。我有一个正在运行的进程(我想保持运行)。如果我复制它使用的dll(例如,将其替换为较新的版本),这是否会导致正在运行的进程出现问题,或者代码是否已经加载,所以这无关紧要? 最佳答案 您不应该复制正在运行的进程正在使用的dll。为了替换dll,需要将其标记为删除并在下次重新启动时替换。如果您希望手动执行此操作,则需要停止该过程。如果您可以复制它-那么dll没有像您怀疑的那样被使用,如果它被延迟绑定(bind)那么您可以在一个过程中复制它进程没有主动锁定它的时间-并且提供dll的内部结构对事件进程没有任何不利

c# - 如何保护进程的内存

我有一个进程,在内存中会有一些重要的值。我不希望任何人能够读取我的进程的内存并获取这些值。所以我试图创建一个程序来查看正在运行的程序列表并确定其中是否有任何程序是“调试器”等。但我意识到有人可以编写一个快速程序来转储我的进程的内存。我知道我系统上的几个进程的内存受到保护。我怎么也能得到这个?(ps:我用的是C#) 最佳答案 任何在具有足够权限的用户(例如本地管理员)下运行的应用程序都可以调用ReadProcessMemory并随时随意阅读您的流程,而无需附加到您的流程调试端口,并且您的处理无法阻止甚至检测到这一点。我什至没有深入探讨

c - 当进程尚未完成时,GetExitCodeProcess() 返回 1

如果我为它创建一个进程和两个管道集,并且该进程在特定时间需要一些用户输入,WindowsCAPI中的GetExitCodeProcess()总是返回1。例如,您可以使用Windowstime命令,这将返回:Thecurrenttimeis:...Enterthenewtime:然后不等待输入直接退出。我不希望进程在它真正完成之前结束,这样我就可以通过管道向它输入。我该如何解决这个问题。我已经构建了这个循环(我仍然希望能够确定处理何时完成):for(;;){/*Pipeinputandoutput*/if(GetExitCodeProcess(...)!=STILL_ACTIVE)bre

C++ Windows CreateChildProcess - 隐藏/不显示子进程的控制台窗口

我需要为我的主进程创建一个子进程作为套接字监听器/服务器,我使用此调用来实现目标:bSuccess=CreateProcessA(NULL,cmdLineArgs,//commandlineNULL,//processsecurityattributesNULL,//primarythreadsecurityattributesTRUE,//handlesareinheritedHIGH_PRIORITY_CLASS,//creationflagsNULL,//useparent'senvironmentNULL,//useparent'scurrentdirectory&siStar

windows - 如何从管理进程以当前用户权限运行进程

当安装程序(由InnoSetup等构建)确实启动一个进程时,该进程始终以管理员权限运行。-因为安装程序已经以管理员身份运行。我想以当前用户的权限运行子进程。有什么好的方法吗? 最佳答案 这个问题在MSFT内部每3或4个月出现一次。安全人员给出的答案是:不能。创建提升的进程token时,对token所做的更改无法撤消。最好的办法是让启动器应用程序运行提升的设置程序,然后当提升的设置程序完成时,转身并运行您的子进程。 关于windows-如何从管理进程以当前用户权限运行进程,我们在Stack

windows - Closehandle() 不终止进程

在CloseHandle()中关闭其句柄后,进程未终止。我有一个由CreateProcess()api创建的进程。即使在关闭其句柄后,它仍在运行。在msdn中,他们说CloseHandle()关闭句柄并且不会终止进程。必须为此调用终止线程。那为什么要CloseHandle()呢?但是当我检查CloseHandle()的返回值时,它成功了。如果是这样,我想知道在这个CloseHandle()中实际做了什么以及它为什么成功返回。我想知道使用它的句柄可以在进程上完成哪些所有操作。我觉得误导了,因为CloseHandle()成功了,但进程仍在继续!进程句柄中实际包含的内容也很棒,与其他类型的句

C# 在不窃取焦点的情况下启动应用程序进程

我开始学习C#,现在我想知道是否有一种方法可以在不窃取焦点的情况下启动第三方应用程序,或者只是始终在后台显示此应用程序/进程的窗口。更具体地说:我编写了一个应用程序,可以使用登录数据等参数启动Steam客户端。据我所知,Steam客户端是用Java编写的,也许这就是我的问题之一。我也知道您可以像这样以“静默模式”启动Steam客户端:"C:\Programs\Steam\Steam.exe"-silent-loginuserpassword但如果我不想让Steam客户端窃取焦点,这将无济于事。有两个窗口出现在前台:Login-Window和Loading-Window。我在stacko