質問

C: Driveのルートなどの保護された場所でファイルを作成しようとしたときに、私のプログラムをスローしたいです(例: FILE* FileHandle = fopen("\\file.txt", a))。代わりに、ファイルは%AppData%の下の仮想ストアで作成されます。

その仮想ストアを無効にするにはどうすればよいですか?

ありがとう

編集:明確にするために、セキュリティを回避し、保護された場所でファイルを作成する方法を尋ねていません。ファイルの作成に失敗したいので、ユーザーに彼がばかだったと伝えることができます。

役に立ちましたか?

解決

アプリケーションマニフェストを追加します。 Asinvoker、Highestavailable、またはrequireAdministratorを選択してください。 Asinvokerが欲しいようですね。

から http://msdn.microsoft.com/en-us/library/bb756929.aspx:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="IsUserAdmin"
     type="win32"/> 
  <description>Description of your application</description> 
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>

他のヒント

から MSDN:

仮想化は次のように有効になります。

  • 32ビットインタラクティブプロセス
  • 管理者の書き込み可能なファイル/フォルダーとレジストリキー

仮想化が無効になっています:

  • 64ビットプロセス
  • 非対話プロセス
  • なりすましするプロセス
  • カーネルモード発信者
  • RequestedExecutionLevelを持つ実行可能ファイル

Adam Marasが指摘したように、あなたの最善の策は、マニフェストを追加して、アプリケーションにRequiredExecutionLevelを設定することです。 「asinvoker」の要求の解決策は、仮想ストアにリダイレクトしたり、標高を求めたりするのではなく、保護された場所でファイル操作に失敗します。

仮想化をオフにする方法を示す記事を以下に示します。

http://www.interworks.com/blogs/dsmith/2011/09/21/disabling-windows-7-virtual-store

それ以外は次のとおりです。

- Windows 7からORBを開始し、ローカルセキュリティポリシーを検索して選択します。

- ローカルポリシーを拡張し、セキュリティオプションをクリックします。右ペインには、下までずっとスクロールすると、「ユーザーアカウントコントロール:ファイルとレジストリの障害をユーザーごとに書き留める」という設定があり、その設定をダブルクリックして無効に変更します。

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