我有一个在目录中查找文件的遗留应用程序。它不能很好地处理丢失的文件。我想要做的是“捕获”文件未找到错误,然后将另一个文件发送回调用应用程序。类似于您在网络服务器上处理404错误并根据请求的URL返回内容的方式,但在本地文件系统上除外。这可能吗?更可取的是,在.Net中是否可行? 最佳答案 您可以通过拦截对WinAPI函数CreateFile的调用来做到这一点。这需要dll注入(inject)。在.NET中,您可以使用此库:easyhook.codeplex.com 关于.net-是否可以
我正在创建一个基本上扫描系统以查看特定进程是否正在运行的Windows程序。我有进程名称(AcroRd32.exe),没有别的。据我所知,最简单的方法是使用CreateToolhelp32Snapshot创建所有进程的快照,然后遍历每个进程以查找进程名称。我的应用程序以高性能为中心。那么有没有更好更有效的方法来做到这一点。应用程序每隔几秒收集一次快照。在快照中迭代100个进程似乎效率不高。是否有直接的API可以通过进程名称找到进程(并通过名称检索进程句柄或ID)?我进行了广泛的搜索,但运气不佳。有人试过这个吗? 最佳答案 扫描进程的
我有一block共享内存,其中包含两个进程之间的一个char字符串和一个整数。进程A写入它,进程B读取它(反之亦然)确保进程A不会在进程B正在读取它的同时更新(写入)它的最有效方法是什么?(我应该只在共享内存中使用标志,使用信号量,临界区....)如果您能指出正确的方向,我将不胜感激。谢谢。Windows,C++ 最佳答案 您不能使用CriticalSection因为这些只能用于同一进程内线程之间的同步。对于进程间同步,您需要使用Mutex或Semaphore.两者的区别在于前者只允许一个线程拥有一个资源,而后者最多允许一个最大数目
假设我想在Windows命令行中运行一个名为Foo.exe的程序。当我查看TaskManager->Processes时,有没有一种方法可以标记该进程的“描述”字段?顺便说一句,exe不是我的/我无法编译它。 最佳答案 任务管理器显示的描述字段是从可执行文件的版本资源中读取的。所以当你开始这个过程时你不能改变它(标记它)。如果您想影响那里出现的内容,那么您需要修改可执行文件,我认为这不是您想要做的。 关于windows-是否可以通过命令行标记Windows进程的描述?,我们在StackO
我需要知道如何在C/C++代码中获取新创建进程的句柄。我对所有这些Microsoft库了解不多,我刚刚阅读了有关创建流程的两种方法。第一个是通过ShellExcecute调用,第二个是通过CreateProcess,但这些都没有重新生成句柄。我需要知道进程的句柄,因为我希望主线程在继续之前等待进程完成。最重要的是,我希望有人帮我编写一个如下所示的函数:HANDLEcreate_process(/*parameterssameasforShellExecute*/){...}请帮忙。 最佳答案 CreateProcess()返回包含进
我在c++中有一个XMLRPC窗口服务。我需要从它启动子进程,如果Windows服务收到请求并且进程已经存在我需要结束那个特定的子进程并再次启动它。我不需要等待进程在启动后退出但是一旦它启动并开始它应该做的事情我需要通知主进程。当子进程结束时,它需要通知启动它的服务,以便我可以维护一个已存在进程的列表。我知道我可以用CreateProcess做到这一点但是,一旦子进程到达特定事物,我该如何处理通知的各个方面。 最佳答案 调用CreateProcess后,跟踪进程句柄。您可以使用它来查看进程是否有exitedornot,并调用Term
谁能告诉我如何确保程序中的某些代码在进程退出或被杀死时得到执行?驱逐舰只有在正常退出时才会被调用。但我希望我的代码在被系统关闭或任务管理器杀死时得到执行。平台是Windows,如果需要,我不介意使用特定于平台的代码。 最佳答案 你不能。如果用户拔掉电源线怎么办? 关于c++-如何保证在进程退出或在c++中被杀死时执行某些代码?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/219
让我们暂时搁置海森堡。我将如何从我自己的进程中监控该进程使用了多少内存?(我可能故意低估了问题,梦想有创意的答案......) 最佳答案 Quassnoi是正确的-但它也可能值得检查我们的这个问题:HowtodetermineCPUandmemoryconsumptionfrominsideaprocess其中包括代码示例 关于windows-监控您自己进程中的内存使用情况,我们在StackOverflow上找到一个类似的问题: https://stack
有两个应用程序。第一个应用程序对有问题的机器是远程的(我无权访问它)并通过网络(LAN)创建一个大文件。我无法控制此过程,也不知道它何时发生。这就是我必须与之合作的。我无法以任何方式添加、更改或改变它。第二个应用程序是我写的,找到这个文件就处理它。此应用计划每5分钟运行一次。当我的应用程序尝试处理文件时,可能会出现文件正在写入的情况,导致处理不完整和/或其他错误,因此我需要在开始之前检测文件是否已完全写入处理它。我可以使用OpenFile()并请求读/写锁定访问。错误将指示正在创建文件。我可以用文件系统观察器做一些聪明的事情http://msdn.microsoft.com/en-us
我想合成一个本地代码错误。这样一来,我们就可以看到发生这种情况时,特别是将某些调试输出放在哪里。Pskill(来自Sys-Internals)导致正常退出。Microsoft似乎不再直接提供DotCrash.exe。有什么方法可以从外部导致进程崩溃? 最佳答案 我在使用windbg之前通过以下方式完成了此操作:开始流程使用windbg附加到进程在我的应用程序的一个函数上设置断点运行应用程序直到遇到断点在windbg中,将局部变量设置为会导致访问冲突的内容(例如,将指针设置为0xFFFFFFFF或破坏寄存器值)按F5,应用程序应该会崩