草庐IT

【JavaEE】进程和线程

全部标签

c++ - 防止 DLL 文件通过 MS Detours 加载到我的进程中

我想阻止特定的第三方DLL文件在运行时加载到我的应用程序进程中。我最初的尝试是使用MSDetours产品。我有一个32位MFC在Windows1064位上运行的应用程序。我使用免费的MSDetours3.0版本进行了测试,作为可行性检查。在我的MFC应用程序类构造函数中,我调用Detours来拦截“加载库”API(LoadLibraryW、LoadLibraryExW、LoadLibraryA和LoadLibraryExA)。这让我可以拦截库加载,目前我只是注销正在加载的库的名称,然后调用原始API,以便它继续加载库。最终的计划是寻找特定的第三方DLL文件名,在这种情况下返回失败,阻止

python - 子进程权限被拒绝

我正在研究python如何在Windows10上启动其他程序,我遇到了堆栈溢出,有人说:importsubprocesssubprocess.call(['C:\\Users\Edvin\Desktop','C:\\Example.txt'])应该这样做,所以我更改了位置,使其特定于我,并且出现了一个错误,即PermissionError:[WinError5]Accessisdenied。有谁知道如何授予python打开文件的权限?我试过:importsubprocesssubprocess.call(['C:\\Users\\Edvin\\AppData\\Roaming\\Mic

linux - 使用硬件定时器是实现进程调度的唯一方法吗?

我读到操作系统使用以下方法实现调度:CPU必须有一个硬件定时器,每X次触发一次中断毫秒。一旦定时器中断触发,定时器中断处理程序将执行使CPU开始执行另一个进程的指令(或者我想我应该说的另一个线程)。我的问题是:我刚才描述的方法是实现调度的唯一方法吗? 最佳答案 没有。基本上有两种在操作系统中实现多线程的基本方法:1)抢先式多任务处理通过抢占式多任务处理,您可以使用中断源来触发任务切换。大多数情况下,人们会在定时器ISR(中断服务例程)内进行任务切换,以防执行长时间运行的任务并且没有发生其他硬件事件。万一发生了其他硬件事件,还可以进行

windows - 线程等待原因

我一直在使用在以下帖子中找到的代码:Howtogetthreadstate(e.g.suspended),memory+CPUusage,starttime,priority,etc我正在检查线程状态,下面的枚举描述了线程“等待”状态的原因-enumKWAIT_REASON{Executive,FreePage,PageIn,PoolAllocation,DelayExecution,Suspended,UserRequest,WrExecutive,WrFreePage,WrPageIn,WrPoolAllocation,WrDelayExecution,WrSuspended,Wr

c++ - 从另一个进程调用函数

我提前为我的英语道歉:D如何在知道指向进程的指针的情况下调用进程中的函数?我试过这个:进程.cpp:DWORDpid;HWNDhwnd;HANDLEphandle;voidAttach(){hwnd=FindWindow(NULL,L"GTA:SA:MP");if(!hwnd){cout主要.cpp:intmain(){std::cout我得到以下异常:Anexceptionwasthrownattheaddress0x006EF7B6inwh_mta.exe:0xC0000005:accessviolationduringexecutionat0x006EF7B6.为什么会这样?如何

c - 确定进程是否已死 - 通过 PID

我有两种不同的方法来检查进程是否仍在运行:1)使用GetExitCodeProcess()2)使用CreateToolhelp32Snapshot()遍历进程列表并检查PID现在,在这两种情况下,我仍然知道我用TerminateProcess终止的进程仍然存在,即使它不是。有没有办法通过PID明确知道进程是活着还是死了?谢谢! 最佳答案 不要将PID用于这样的事情。PID被重复使用并且具有非常的范围,具有非常高的冲突概率。换句话说,您会发现一个正在运行的进程,但它是一个不同进程。 关于c

python - 从子进程启动时如何停止 Bottle Web 服务器

我想嵌入伟大的Bottleweb框架到一个小应用程序(第一个目标是Windows操作系统)。由于子进程模块,此应用启动了bottle网络服务器。importsubprocessp=subprocess.Popen('pythonwebsrv.py')Bottle应用程序非常简单@route("/")defindex():returntemplate('index')run(reloader=True)它将默认网络服务器启动到Windows控制台。除了我必须按Ctrl-C来关闭bottle网络服务器之外,一切似乎都还不错。我希望主应用程序在关闭时终止网络服务器。我找不到办法做到这一点(不

c++ - 如何扫描另一个进程内存以查找特定字符串后面的内容?

我想通过另一个进程扫描当前正在运行的native应用程序的整个堆。例如,我想知道此进程内存中ASCII序列“test”的所有实例之后是什么(在这种情况下,我将扫描“test”并继续阅读)。我尝试用谷歌搜索更多信息,但没有找到太多信息:我找到了ReadProcessMemory这看起来很有趣,但我怎么知道进程分配的内存地址呢? 最佳答案 尝试VirtualQueryEx.如果您发现您正在访问其他进程中的大量内存,请考虑使用CreateRemoveThread(samplecode)。这将允许您将自己的DLL注入(inject)到其他进

c++ - 是否可以删除由Windows下的进程打开的文件?

出于测试和模拟目的,我想删除我的进程当前打开的文件。CreateFiledocs声明可以在允许打开句柄指向的文件被另一个操作删除的模式(FILE_SHARE_DELETE)中打开文件。(我已经通过CreateFile(FILE_SHARE_DELETE)+DeleteFile尝试并确认了这一点。)但是我现在想知道的是,是否有可能以某种方式删除没有上述标志的任何人打开的文件?据我了解DeleteFiledocs这个功能是不可能的,因为TheDeleteFilefunctionfailsifanapplicationattemptstodeleteafilethatisopenfornor

c++ - 两个进程之间的通信

之前已经讨论过这个问题,但我一直在努力解决这些问题,所以希望能得到一个更适合我情况的更清晰的答案:我正在32位Windows(最低要求是WinXP)下用C++开发一个应用程序,它需要跨两个进程进行通信。要害就是进程1(p1)需要启动进程2(p2),然后调用p2的各种函数。我需要p1停止它正在做的事情,直到它调用的p2函数完成,然后从它停止的地方继续。对我来说最好的研究方法是什么,这样我才能做这样的事情?祝一切顺利克里斯 最佳答案 我知道远程过程调用听起来更吸引人,因为它消除了设计您自己的“通信协议(protocol)”和序列化您自己