문제

경로 매개 변수가 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;
}
도움이 되었습니까?

해결책

  1. 예제 코드를 볼 수 있습니까?
  2. 드라이브를 지정 했습니까? 즉 "C : Windows System32 "
  3. System32 내부에서 파일을 열려고합니까?
  4. 이것은 Windows 7에서만 발생합니까? 그리고
  5. 처음에 System32 내부에서 무엇이든 수정 해야하는 이유는 무엇입니까?

빌리 3

다른 팁

64 비트 OS에서 실행되는 32 비트 앱 인 경우 CreateFile에 대한 호출을 "C : Windows System32"에서 읽기 전에 WOW64DisableWow64FSREDIPERECTION () 호출 할 수 있습니다. 당신에게 무슨 일이 일어나고 있는지.

Windows XP를 사용하여 관리자/표준 계정 모두 장치 핸들을 얻기 위해 관리 권한이 필요하지 않습니다.

이는 Vista, Windows 7 (UAC)에서 변경되었으며, 여기서 장치 핸들을 얻기 위해 관리자 권한이 있어야합니다.

일부 솔루션은 다음과 같습니다.

  1. 서비스를 사용하십시오
  2. COM 고도 모니 커를 사용하십시오
  3. Manifest를 사용하십시오

참고 : 장치에서 통계 정보 만 쿼리 해야하는 경우 관리 권한이 필요하지 않습니다. 사용할 때 CreateFile(), the에 0 (0)을 지정하십시오 dwdesiredaccess 매개 변수.

프로그램은 아마도 관리자로 실행해야 할 것입니다. 관리자 인 경우에도 권한을 에스컬레이션해야합니다. 프로그램을 실행할 때 마우스 오른쪽 버튼을 클릭하고 "관리자로 실행"을 클릭하거나 속성을 편집하고 항상 관리자로 실행을 선택하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top