tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルWin7+VB2008 Program Filesにデータを書き込むには?
記事No9951
投稿日: 2010/03/07(Sun) 18:25
投稿者chime
Windows7+VS2008です。

VB2008上では問題はありませんが、installerを追加して実行しProgram Files
に配布するとファイル書き込みで拒否されます。Administrator権限です。VB2008で作成
した実行ファイルでは問題がないのはProgram Files上にはない為と思います。

Installerモードでの問題解決法は考えられるのは書き込みをProgram Files
以外にすることで解決すると思いますが、データが散らばることと
WinXPでは問題外なのでこれは最後の手段と思っています。

Windows7固有の問題であり一般的Q&Aになると思います。解決できる方法があれば、
コメントください。

chime

[ツリー表示へ]
タイトルRe: Win7+VB2008 Program Filesにデータを書き込むには?
記事No9952
投稿日: 2010/03/07(Sun) 18:56
投稿者YuO
Environment.SpecialFolder.ProgramFiles以下にファイルを書き込まなければならない理由はなんですか。

Windows NT系において,Environment.SpecialFolder.ProgramFiles以下のファイルに書き込みを行うのはそもそも間違いです。
原則はEnvironment.SpecialFolder.ApplicationData以下であり,
どうしても必要ならばEnvironment.SpecialFolder.CommonApplicationData以下に書き込むのが筋です。

理由がまったく考えつきませんが,
Environment.SpecialFolder.ProgramFiles以下にファイルを書き込まなければならない正当な理由があるのであれば,
プログラムを分離し,片方をAdministratorRequiredとしたマニフェストを埋め込んだファイルにする方法もあります。
これであればUACの機能で管理者権限を取得できますから,
Environment.SpecialFolder.ProgramFilesへの書き込みができます。

[ツリー表示へ]
タイトルRe^2: Win7+VB2008 Program Filesにデータを書き込むには?
記事No9953
投稿日: 2010/03/07(Sun) 20:19
投稿者chime
YuOさん

早速のコメントありがとうございます。

> Environment.SpecialFolder.ProgramFiles以下にファイルを書き込まなければならない理由はなんですか。

簡単に書き込み指示命令を書けば、計算用パラメータファイルを読み込んだcurrent directoryに計算結果が書き込まれるとの考えです。

> Windows NT系において,Environment.SpecialFolder.ProgramFiles以下のファイルに書き込みを行うのはそもそも間違いです。
> 原則はEnvironment.SpecialFolder.ApplicationData以下であり,
> どうしても必要ならばEnvironment.SpecialFolder.CommonApplicationData以下に書き込むのが筋です。

このコメントで常識的にはProgram Failesには書き込まず、別のたとえばApplicationData
にFileを書き込むのが標準とわかりました。
WindowsXPでは許してくれたのですが、Windows7は厳しく管理しているものと推察します。

VS2008のビルトで作成された.exeでは問題外であり、書き込みプログラムを一般性を考えてEnvironment.SpecialFolder.CommonApplicationDataに書き換えてみます。

ProgramFilesには書き込まないのが常識とのコメントありがとうございました。

chime

[ツリー表示へ]