Windows7でファイル作成エラーが発生する
-
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
他のヒント
これは、CreateFileのへのお電話は、 "C:\ WINDOWS \ System32に" から読まれる前に、その後Wow64DisableWow64FsRedirection()を呼び出す、64ビットOS上で動作する32ビットアプリケーションの場合は代わりに "C:\ WINDOWS \ SYSWOW64" の、あなたに何が起こっているか、おそらくこれは。
Windows XP を使用する場合、管理者/標準アカウントの両方で、デバイス ハンドルを取得するための管理者権限は必要ありません。
これは、Vista、Windows 7 (UAC) では変更されており、デバイス ハンドルを取得するには管理者権限が必要です。
いくつかの解決策は次のとおりです。
- サービスを利用する
- COM 標高モニカを使用する
- マニフェストを使用する
注記:デバイスから統計情報をクエリするだけの場合は、管理者権限は必要ありません。使用するとき CreateFile()
, にはゼロ (0) を指定します。 dw必要なアクセス パラメータ。
あなたは、プログラムは、おそらく管理者として実行する必要があります。あなたが管理者であっても、自分の権限を昇格する必要があります。右あなたがプログラムを実行するときにクリックして「管理者として実行」をクリックするか、プロパティを編集し、常に管理者として実行を選択します。