我在win7中使用python的子进程运行一个“mstsc”程序:>>>importsubprocess>>>p=subprocess.Popen('mstsc')>>>p.pid8884但是,当我检查Windows的进程监视器时,'8884'进程并不存在,而另一个'mstsc'确实存在。所以我想知道'mstsc'在调用子进程时是否创建了另一个子进程。请帮忙? 最佳答案 嗯,我仍然是Python的新手,但你仍然可以通过这个。Popen类使用windows中的CreateProcess函数来执行子程序。CreateProcess函数创
当Windows中的服务或应用程序启动、停止以及它是成功退出还是出现错误代码时,我需要跟踪日志。据我了解,许多服务不会记录自己的开始和停止时间,或者如果它们正确退出,所以似乎要走的路必须在API中插入一个钩子(Hook),以便在服务/应用程序请求时捕获处理空间并放弃它。我的问题是我需要hook什么函数才能完成这个,这有可能吗?我需要它在64位WindowsXP和7上工作。 最佳答案 我认为最好的办法是使用设备驱动程序。参见PsSetCreateProcessNotifyRoutine.
我正在使用Perl创建Windows服务。为此,我正在使用Win32::Daemon。处理服务(接受启动和停止回调等)的Perl脚本使用system()命令调用.bat文件,最终调用我的最终Perl程序。问题是当我停止服务时,system()启动的进程没有关闭,最终进程(由system()生成的进程启动)也没有关闭)。好像进程之间没有“父子”关系(停止Windows服务通常会导致所有相关进程同时关闭)。编辑:我在上面添加了代码。我只是展示了注册服务回调和调用StartService的主要函数,以及三个主要回调:启动、运行、停止。submain{#registeringserviceca
场景:进程使用CreateNamedPipe()创建管道并使用ConnectNamedPipe()连接到它,传输一些数据,然后退出(没有清理)。管道是否持续存在?它的另一面是在不同的进程中使用CreateFile()打开的,是否在创建进程退出时出错?更一般地说,命名管道的生命周期是多长?应该如何清理陈旧的管道? 最佳答案 管道是内核对象,它们会一直存在,直到所有关闭它们上的句柄。如果客户端没有好好说再见而其他进程继续使用它,您可能会得到ERROR_BROKEN_PIPE。 关于windo
我想在5分钟后终止一个进程(例如),我用它打开subprocess.Popen()p=subprocess.Popen('calc.exe',shell=True)#example我用print(p.pid)打印了pip,用time.sleep(10)睡了10秒,然后用终止了进程>p.kill().问题是calc.exe仍在运行。我已经使用ProcessExplorer来查看这里发生了什么,似乎子进程将创建一个带有pid=p.pid的cmd,它会创建calc.exe,但有另一个我不知道的pid。所有代码在这里:importsubprocess,os,timep=subprocess.P
通常,在使用GUI窗口时,您可以捕获WM_CLOSE事件以在应用程序终止之前执行清理任务。但是,如果我的应用程序只是在后台运行并且进程仅在Windows关闭时终止-是否有任何方法可以捕获此事件并在进程终止之前执行一些清理?我知道无法干预任务管理器进程的关闭。但是随着关机,我只注意到有一个shutdown和一个shutdown/F命令。 最佳答案 创建一个message-onlywindow,并处理WM_QUERYENDSESSION和/或WM_ENDSESSION消息。 关于C++Win
有什么方法可以让一个线程分支到它自己的独立进程中吗?我知道有CreateProcess函数,但据我所知,您只能使用它运行外部应用程序。我所要求的是可能的吗? 最佳答案 这是可能的。您可以使用虚拟应用程序和CREATE_SUSPENDED标志调用CreateProcess,这样它就不会立即运行。然后你可以使用VirtualAllocEx在创建的进程中分配内存空间,并使用WriteProcessMemory将代码和数据写入其中。然后取消挂起进程以运行它。您还可以使用CreateRemoteThread创建一个在另一个现有进程的上下文中运
我有一个在目录中查找文件的遗留应用程序。它不能很好地处理丢失的文件。我想要做的是“捕获”文件未找到错误,然后将另一个文件发送回调用应用程序。类似于您在网络服务器上处理404错误并根据请求的URL返回内容的方式,但在本地文件系统上除外。这可能吗?更可取的是,在.Net中是否可行? 最佳答案 您可以通过拦截对WinAPI函数CreateFile的调用来做到这一点。这需要dll注入(inject)。在.NET中,您可以使用此库:easyhook.codeplex.com 关于.net-是否可以
我正在开发一个需要品牌化的Windows应用程序。客户将把它卖给其他企业,并且需要为每笔销售定制Logo和名称。客户端不会用visualstudio!我想我需要编写一个打包应用程序来将自定义Logo和字符串资源注入(inject)可执行文件。我打算使用WPF。但由于这是一项关键要求,如果更容易的话,我愿意在winforms中完成。最好的方法是什么?欢迎提出任何建议。 最佳答案 听起来您想要的是应用程序换肤。这并不意味着您必须解压exe并注入(inject)资源。您只需要从项目开始就考虑皮肤并构建应用程序来支持您的皮肤需求。WPF将使
我正在创建一个基本上扫描系统以查看特定进程是否正在运行的Windows程序。我有进程名称(AcroRd32.exe),没有别的。据我所知,最简单的方法是使用CreateToolhelp32Snapshot创建所有进程的快照,然后遍历每个进程以查找进程名称。我的应用程序以高性能为中心。那么有没有更好更有效的方法来做到这一点。应用程序每隔几秒收集一次快照。在快照中迭代100个进程似乎效率不高。是否有直接的API可以通过进程名称找到进程(并通过名称检索进程句柄或ID)?我进行了广泛的搜索,但运气不佳。有人试过这个吗? 最佳答案 扫描进程的