質問

パスパラメータが 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

他のヒント

これは、CreateFileのへのお電話は、 "C:\ WINDOWS \ System32に" から読まれる前に、その後Wow64DisableWow64FsRedirection()を呼び出す、64ビットOS上で動作する32ビットアプリケーションの場合は代わりに "C:\ WINDOWS \ SYSWOW64" の、あなたに何が起こっているか、おそらくこれは。

Windows XP を使用する場合、管理者/標準アカウントの両方で、デバイス ハンドルを取得するための管理者権限は必要ありません。

これは、Vista、Windows 7 (UAC) では変更されており、デバイス ハンドルを取得するには管理者権限が必要です。

いくつかの解決策は次のとおりです。

  1. サービスを利用する
  2. COM 標高モニカを使用する
  3. マニフェストを使用する

注記:デバイスから統計情報をクエリするだけの場合は、管理者権限は必要ありません。使用するとき CreateFile(), にはゼロ (0) を指定します。 dw必要なアクセス パラメータ。

あなたは、プログラムは、おそらく管理者として実行する必要があります。あなたが管理者であっても、自分の権限を昇格する必要があります。右あなたがプログラムを実行するときにクリックして「管理者として実行」をクリックするか、プロパティを編集し、常に管理者として実行を選択します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top