반응형
출처 - http://www.codeproject.com/tips/55290/Disabling-Windows-file-system-redirection-on-a-CFi.aspx
int _tmain()
{
FILE *fp = NULL;
BOOL bOpenFile = TRUE;
PVOID oldValue;
Wow64DisableWow64FsRedirection(&oldValue);
fp = _tfopen(SYSTEM32_FILE_PATH, _T("r") );
Wow64RevertWow64FsRedirection(&oldValue);
if(fp == NULL){
_tprintf(_T("fp is null.\n"));
}
else{
_tprintf(_T("fp is not null.\n"));
fclose(fp);
}
return EXIT_SUCCESS;
}
typedef BOOL (WINAPI *FWOW64DISABLEWOW64FSREDIRECTION)(PVOID *);
typedef BOOL (WINAPI *FWOW64REVERTWOW64FSREDIRECTION)(PVOID);
FWOW64DISABLEWOW64FSREDIRECTION fWow64DisableWow64FsRedirection = NULL;
FWOW64REVERTWOW64FSREDIRECTION fWow64RevertWow64FsRedirection = NULL;
HMODULE hMod = NULL;
PVOID pOldValue = NULL;
hMod = GetModuleHandle("Kernel32.dll");
if( !hMod )
{
printf("GetModuleHandle : %d\n", GetLastError());
return 0;
}
fWow64DisableWow64FsRedirection = (FWOW64DISABLEWOW64FSREDIRECTION)GetProcAddress(hMod, "Wow64DisableWow64FsRedirection");
if( fWow64DisableWow64FsRedirection )
{
// Disable Redirection
if( !fWow64DisableWow64FsRedirection(&pOldValue) )
{
printf("fWow64DisableWow64FsRedirection : %d\n", GetLastError());
return 0;
}
}
fWow64RevertWow64FsRedirection = (FWOW64REVERTWOW64FSREDIRECTION)GetProcAddress(hMod, "Wow64RevertWow64FsRedirection");
if( fWow64RevertWow64FsRedirection )
{
// Revert Redirection
if( !fWow64RevertWow64FsRedirection(&pOldValue) )
{
printf("fWow64RevertWow64FsRedirection : %d\n", GetLastError());
return 0;
}
}
반응형
'C > Reference' 카테고리의 다른 글
[C] A.txt 내용을 정렬하여 B.txt로 출력 (0) | 2024.12.15 |
---|---|
[C] A.txt 내용을 정렬하여 콘솔에 출력 (0) | 2024.12.15 |
[C] Thread 사용 예제 (0) | 2024.12.15 |
[C] 파일 속성의 만든 날짜, 수정한 날짜, 액세스한 날짜 얻고 수정하기 (0) | 2024.12.15 |
[C] 특정 경로의 하위 레지스트리를 모두 출력 (0) | 2024.12.15 |