2011-02-09 3 views
1

独自のインストールディレクトリにテキストファイルを作成するWPFアプリケーションがあります。しかし、UACのプロンプトが表示された後も、Windows VistaとWindows 7のユーザーはしばしば「ファイルアクセスに失敗しました」というエラーが表示されます。解決策は、Windowsエクスプローラで実行可能ファイルを見つけ、ファイルのプロパティの下にある互換性タブを開き、「管理者として実行する」をチェックすることです。これは明らかにひどいユーザーエクスペリエンスですが、そのステップを実行することなく、アプリケーションがこれらの権限を確実に確保できるようにする方法がわかりません。私はUACプロンプトをバイパスしようとしていません。WPFアプリケーションがファイルアクセス権を取得しない

答えて

1

カスタムマニフェスト(プロジェクトプロパティ - >ビルド - >マニフェスト)を埋め込むことで、アプリケーションを管理者権限で起動させることができます(UACにはダイアログボックスが表示されます)。

マニフェスト例(requestedExecutionLevel一部はimportaintです):

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" 
    xmlns="urn:schemas-microsoft-com:asm.v1" 
    xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" 
    xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <assemblyIdentity version="1.0.0.0" name="yourappname.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
     <security> 
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
       <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
      </requestedPrivileges> 
     </security> 
    </trustInfo> 
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
     <application> 
      <!-- A list of all Windows versions that this application is designed to work with. Windows will automatically select the most compatible environment.--> 
      <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node--> 
      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>--> 
     </application> 
    </compatibility> 
</asmv1:assembly> 
2

一般的に、.Netはアプリケーション生成ファイルをユーザーのホームディレクトリまたは共有ユーザーフォルダのどちらかに入れたいと思っています。この回答を見てください:When using a Settings.settings file in .NET, where is the config actually stored? それは.Netの設定ファイルについて話しますが、そこに他のファイルを置くことができます。

+1

はあなたに感謝が、私はここに、.NETに反対します。その理由は、ファイルの場所が、ユーザーが常にファイルを作成して共有していることを考えると、サポートの悪夢を作り出すWindowsのバージョンに基づいて変更されるからです。 "xp then if"と言うよりも、c:\ program files \ myapp \ etcに移動するほうがずっと簡単です。 –

+2

しかし、Program filesディレクトリも修正されていないことに気づいていますか?それは64/32ビットシステム、言語、...と変更され、インストールディレクトリ自体ももちろん変更可能です。しかし、あなたに最も適したものは... :-) –

関連する問題