我有Windows 8.1.我从E:\文件夹中的C:\ Windows\System32复制了User32.dll.首先,我已经提到,如果你只是复制粘贴,原始User32.dll的内容和User32.dll的副本是不一样的!我发现它,使用WinMerge程序.所以,我在C上写了我的程序,像这样:
void copy(FILE* input_dll)
{
FILE* f = fopen("E:\\user32.dll", "wb");
int size_of_base_input_dll_file;
// Get the Size of base_file
fseek(input_dll, 0, SEEK_END);
size_of_base_input_dll_file = ftell(input_dll);
//move on a begin of dll
fseek(input_dll, 0, SEEK_SET);
for (int i = 0; i < size_of_base_input_dll_file; ++i)
{
char symbol = fgetc(input_dll);
fputc(symbol, f);
}
}
int main()
{
FILE* user32 = fopen("C:\\Windows\\System32\\user32.dll","rb");
copy(user32);
}
Run Code Online (Sandbox Code Playgroud)
现在WinMerge显示C:\ Windows\System32\user32.dll和E:\ user32.dll的内容相同,但文件C:\ Windows\System32\user32.dll大于E:\ user32.dll on 100 KB !!! 它怎么样?
当我尝试使用WinApi LoadLibraryA函数加载user32.dll(E:\ user32.dll)的副本时,无论是否使用我的函数副本获得user32.dll(E:\ user32.dll)的副本,它都返回NULL或者使用复制粘贴.
所以我的问题: