2

私は現在、Windows Native API、Nt*/Zw*メソッドを調査しています。WDK をダウンロードしてインストールし、アプリケーション (x64、Win 8.1 x64、VS2013) を正常にコンパイルしました。それが行う唯一のことは、への呼び出しNtOpenFile()です。

正常にコンパイル/リンクするには、プロジェクトのプロパティ (テンプレート Application For Drivers) に次の変更を加える必要がありました。

  • WDK からインクルード フォルダーを追加する
  • WDK から Lib フォルダーを追加する
  • ntoskrnl.lib を使用するようリンカーに指示する

予期せず、デバッガーを実行すると、「C:\Windows\SYSTEM32\werkernel.sys がコンピューターにないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてください。」というエラー メッセージが表示されます。werkernel.sys は明らかに system32\drivers に存在します。

編集:明確にするために、アイコンをダブルクリックしてアプリを起動すると、前述のエラーも発生します。

このロードは、コードの前に発生します。問題のファイルのインターネットやプロジェクト プロパティのどこにも何も見つかりません。要約すると、これまでのところ次のような質問があります。

  1. アプリケーションで werkernel.sys が読み込まれるのはなぜですか?
  2. System32 からロードされているのはなぜですか?

可能であることは理解していますがmklink werkernel.sys drivers\werkernel.sys、何かひどく間違ったことをしているように感じます。

4

2 に答える 2