挂钩(HOOK) KERNEL32.DLL的CreateProcessA 和CreateProcessW,在英文OS工作正常但在中文系统下不正常
我想做一个程序实现以下功能:建立一个允许执行的程序列表,列表之内的程序可以启动,之外的程序不能启动. 实现的方法是挂钩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,将输出一行但在中文系统下就是没有输出。