挂钩(HOOK) KERNEL32.DLL的CreateProcessA 和CreateProcessW,在英文OS工作正常但在中文系统下不正常

WolfChaseLion 2004-07-08 03:10:33
我想做一个程序实现以下功能:建立一个允许执行的程序列表,列表之内的程序可以启动,之外的程序不能启动. 实现的方法是挂钩CreateProcessA 和CreateProcessW两个函数. 用的是Jeffrey Richter的CAPIHOOK类.现在的问题是程序在英文系统下可以工作但在中文系统下工作不正常. 为什么呢?请高手指点.
以下是代码部分代码
//这是替代CreateProcessA的函数
int WINAPI Hook_CreateProcessA(... )
{

     //为了调试方便,只是输出什么程序启动了.
     FILE * fl = fopen("C:\\log.txt","a+" );
fprintf(fl,"___Hook_CreateProcessA___lpApplicationName = %s;lpCommandLine = %s \n" ,lpApplicationName,lpCommandLine);
fclose(fl);


在英文系统下每启动一个程序如NOTEPAD,将输出一行但在中文系统下就是没有输出。


...全文
283 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
豆腐 2004-07-09
  • 打赏
  • 举报
回复
哪里的缓冲区阿?
WolfChaseLion 2004-07-09
  • 打赏
  • 举报
回复
fzd999(花差花差)
谢谢! 但是我不明白哪里的"缓冲区"? 怎么 + 1?是否可以讲得明白一点. 救我啊!
fzd999 2004-07-09
  • 打赏
  • 举报
回复
这个问题以前见讨论过,建议在中文系统下把缓冲区大小 +1,理由还没研究出来
ljseven 2004-07-08
  • 打赏
  • 举报
回复
估计是多字节字符的问题,把它都改成多字节字符看看如何

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧