Windows7의 CreateFile 오류
-
23-08-2019 - |
문제
경로 매개 변수가 CreateFile
기능 대상 \Windows\System32\
다음 오류 코드로 호출이 실패합니다 ERROR_PATH_NOT_FOUND
.
파일 경로가 정확합니다. 저는 폴더의 소유자이므로 질문은 왜 호출이 실패합니까? MS는 폴더에 액세스하는 것을 금지하는 특별 정책을 추가 했습니까?
샘플 코드 :
TCHAR szFile[MAX_PATH];
PathCombine(szFile, g_szSystemDirectory, "settings.ini");
HANDLE hFile = CreateFile(szFile,
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("INVALID FILE: %i", GetLastError());
return FALSE;
}
해결책
- 예제 코드를 볼 수 있습니까?
- 드라이브를 지정 했습니까? 즉 "C : Windows System32 "
- System32 내부에서 파일을 열려고합니까?
- 이것은 Windows 7에서만 발생합니까? 그리고
- 처음에 System32 내부에서 무엇이든 수정 해야하는 이유는 무엇입니까?
빌리 3
다른 팁
64 비트 OS에서 실행되는 32 비트 앱 인 경우 CreateFile에 대한 호출을 "C : Windows System32"에서 읽기 전에 WOW64DisableWow64FSREDIPERECTION () 호출 할 수 있습니다. 당신에게 무슨 일이 일어나고 있는지.
Windows XP를 사용하여 관리자/표준 계정 모두 장치 핸들을 얻기 위해 관리 권한이 필요하지 않습니다.
이는 Vista, Windows 7 (UAC)에서 변경되었으며, 여기서 장치 핸들을 얻기 위해 관리자 권한이 있어야합니다.
일부 솔루션은 다음과 같습니다.
- 서비스를 사용하십시오
- COM 고도 모니 커를 사용하십시오
- Manifest를 사용하십시오
참고 : 장치에서 통계 정보 만 쿼리 해야하는 경우 관리 권한이 필요하지 않습니다. 사용할 때 CreateFile()
, the에 0 (0)을 지정하십시오 dwdesiredaccess 매개 변수.
프로그램은 아마도 관리자로 실행해야 할 것입니다. 관리자 인 경우에도 권한을 에스컬레이션해야합니다. 프로그램을 실행할 때 마우스 오른쪽 버튼을 클릭하고 "관리자로 실행"을 클릭하거나 속성을 편집하고 항상 관리자로 실행을 선택하십시오.
제휴하지 않습니다 StackOverflow