独自のインストールディレクトリにテキストファイルを作成するWPFアプリケーションがあります。しかし、UACのプロンプトが表示された後も、Windows VistaとWindows 7のユーザーはしばしば「ファイルアクセスに失敗しました」というエラーが表示されます。解決策は、Windowsエクスプローラで実行可能ファイルを見つけ、ファイルのプロパティの下にある互換性タブを開き、「管理者として実行する」をチェックすることです。これは明らかにひどいユーザーエクスペリエンスですが、そのステップを実行することなく、アプリケーションがこれらの権限を確実に確保できるようにする方法がわかりません。私はUACプロンプトをバイパスしようとしていません。WPFアプリケーションがファイルアクセス権を取得しない
1
A
答えて
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. ファイルアクセス権とディレクトリアクセス権
- 2. アプリケーションのファイルアクセス権を変更する
- 3. ファイルアクセスなしでアプリケーション設定を取得する
- 4. Cocoaでのファイルアクセス権の読み取り
- 5. php - ファイルアクセス権の変更
- 6. Win10のバックグラウンドタスクのファイルアクセス権
- 7. WPFアプリケーションがデバッグしない
- 8. mongodがlinux mintのファイルアクセス権を持っています
- 9. Subversionリポジトリにファイルアクセス権を保存する
- 10. C#のファイルアクセス権を設定する
- 11. Windowsサーバーホストのファイルアクセス権を変更する
- 12. svnがファイルアクセス権を維持するようにします。
- 13. ファイルアクセスのローカルTomcatパスを取得する
- 14. Oracleユーザーがロールから特権を取得しない
- 15. PHP unlink()コールのWindowsファイルアクセス権の問題
- 16. unix - chmodデフォルトの将来のファイルアクセス権
- 17. Linux/Unix with .NETコアのファイルアクセス権
- 18. Facebookアプリケーションの古い権限ページを取得する方法
- 19. WPF ListViewとViewViewSourceがViewModelでSelectedItemを取得しない
- 20. WPFアプリケーションのコマンドバインディングが機能しない
- 21. DispatcherTimerがWPFアプリケーションで起動しない
- 22. wpf wpfアプリケーションのすべてのテキストボックスを取得する方法
- 23. Windows上でのファイルアクセス権のある奇妙な状況
- 24. 静的なウェブサイトのファイルアクセス権は重要ですか?
- 25. WPF C#アプリケーションでフォーカスを取得していないときにアプリケーションをキャプチャする
- 26. ネイティブコントロールをWPFに変換してタブキーを取得しない
- 27. Azure Active Directoryアプリケーションで権限を取得する方法は?
- 28. Cocoa - アプリケーション内で特権を取得する
- 29. Facebookからの読み取りアクセス権を取得した後にpublish_action権限を取得します
- 30. Apacheのログローテーションのファイルアクセス権を変更する方法
はあなたに感謝が、私はここに、.NETに反対します。その理由は、ファイルの場所が、ユーザーが常にファイルを作成して共有していることを考えると、サポートの悪夢を作り出すWindowsのバージョンに基づいて変更されるからです。 "xp then if"と言うよりも、c:\ program files \ myapp \ etcに移動するほうがずっと簡単です。 –
しかし、Program filesディレクトリも修正されていないことに気づいていますか?それは64/32ビットシステム、言語、...と変更され、インストールディレクトリ自体ももちろん変更可能です。しかし、あなたに最も適したものは... :-) –