VS2008設プロジェクト:共有(すべてのユーザー)用データファイル?
質問
仲間の類人猿とは明白と睡蓮paddlewheels!
の開発をしているWindowsデスクトップアプリクライアントまで、フルのC#/.純/コンポーネントのラインナップを用い、VS2008年.このアプリが必要とは、Vista、XPます。ように設定-Windowsのインストーラープロジェクトのインストールアプリです。
私のアプリが必要で読み込み、変更、書き込みアクセスをSQLCEデータベースファイル(.sdf)およびその他のデータベース-タイプのファイルに関連する第三者の管理います。これらのファイルは共有ユーザーログインのPCを有するとともに、管理者が行います。このことはもちろん、そのファイルできませんのプログラム独自のインストール先ディレクトリとしてどうしようもなくなる前にご到着のVista、ありですね!).
と思っていたが、実際に解決することを期待します。 Vista、XPと共用データフォルダーを対象にする。 ("\ProgramData"をVistaでは、"\Documents and Settings\All Users\Application Data"XP.) きます。純ます。GetFolderPath(SpecialFolder.CommonApplicationData)コールが存在するための経路はこれらのフォルダを与えられたPCであり!
がいよいのかを指定し共有-アプリケーションデータフォルダとして目標を設定。
設定はプロジェクトスキー施設のすぐそばにある、共通のファイル"フォルダが、その目的のための共通プログラム部品(データファイル)は、通常、以下にある"\プログラムファイル"と同じセキュリティ上の制約のもの"\データファイルのインストール"はあり!
設定はプロジェクトスキー施設のすぐそばにある、お客様のアプリケーションデータフォルダに、そのユーザーごとにフォルダには、どのようにしていないですね!
することはできるファイルの共有アプリ-データフォルダには、堅牢、クロスフロントのスタッフは英語版の方からVS2008設定しました。誰でもできるので教えていかがですか?
解決
ことを学ぶことができたと私の答えですよ、ありですね!しかし残念なも問題なし!-これはすごい、と思いました私は、駅周辺の整備を再開しようと思上?ありですね!
入れてもディレクトリのサブディレクトリのアプリケーションが一般的データフォルダからVS2008設プロジェクト、"わらびもち"をここでん:
右クリックしてインプロジェクトのソリューションエクスプローラのとり"表示→ファイルシステム"です。
右クリックし"ファイルシステムのターゲット機"およびピを追加する"特別フォルダ->カスタムフォルダ".
名前の変更、カスタムフォルダへ"アプリケーションが一般的データフォルダです。" (こんの名前に使用される結果のフォルダをかけて食べるという習慣があり継続を支援することを目標にします。)
変更のフォルダのDefaultLocation産"[CommonAppDataFolder][ー]\[ProductName]".注の類似性の高いDefaultLocationのアプリケーションフォルダなどの奇数の使用の単一のバックスラッシュ.
マーベルの一瞬のばな否定)があるようにフォルダの名前のプロパティ"本物件"といいます。
変更のフォルダの財産"COMMONAPPDATAFOLDER".
データファイルの"アプリケーションが一般的データフォルダにコピー"\ProgramData\メーカー\ProductName"(windows Vista)または"\Documents and Settings\All Users\Application Data\メーカー\ProductName"(XP)がインストーラが実行されます。
今ここで示されているデータVistaの下で、管理者さんを変更り/書き込みアクセスのファイルをすることができます。いすべてのユーザにファイルで取得すること"をはじめ、プログラムファイル"においても開示しております。いかなぁ、というのが、アプリケーションが一般的データフォルダ?
他のヒント
代わりにチェックを有効にする"ClickOnceセキュリティ設定"を選ぶ"このメンバーとステークホルダー"用途変更することができ、アクセス権のアプリのCommonAppDataDirectoryとカスタムアクションのインストールのセットアップ。こうした:
- 追加カスタムアクション電話アプリの設置(交互にすることができ、別のプログラム/dllを呼び出する代わりに)
- セットの引数の物件てインストール作業を進めます"
- 修正をメインにプログラム。csチェックするarg:
static void Main(string[] args) { if (args != null && args.Length > 0 && args[0] == "Install") { ApplicationData.SetPermissions(); } else { // Execute app "normally" } } - 書いたのSetPermissions機能をプログラムにパーミッションを変更する
public static void SetPermissions() { String path = GetPath(); try { // Create security idenifier for all users (WorldSid) SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null); DirectoryInfo di = new DirectoryInfo(path); DirectorySecurity ds = di.GetAccessControl(); // add a new file access rule w/ write/modify for all users to the directory security object
ds.AddAccessRule(new FileSystemAccessRule(sid, FileSystemRights.Write | FileSystemRights.Modify, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, // all sub-dirs to inherit PropagationFlags.None, AccessControlType.Allow)); // Turn write and modify on // Apply the directory security to the directory di.SetAccessControl(ds); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
以来、インストーラを起動して動作する管理者権、プログラムを変更することができるようになアクセス権を表します。を読んでどこかに"をClickOnceセキュリティ"の原因となりますので、ユーザーに望ましくない迅速なでアプリ起動します。いましたがいまして、上記のような予防にこの部品が追加されています。ということで自信がない。思いが恩恵を受けてみようにこの数日前
いるのです。そのデータベースファイル(.自衛隊)と同じフォルダにアプリをインストール(アプリケーションフォルダ).の安全保障"タブのプロパティ]ウィンドウでのプロジェクトに時間がかかったり、ClickOnceセキュリティ設定"を選択し"このメンバーとステークホルダーアプリ"、再構築とに設定します。その後なセキュリティ上の問題
を使用していVisual Studio2008年のWindows Vista
この働きを活用していることからもVS2005さんのDefaultLocation、'\'を別のCommonAppDataFolder.
[CommonAppDataFolder][メーカー][ProductName]
知らない場合はこの商品につけられたタがライマンしたのが奇数の使用の単一のバックスラッシュわれていないわけではありませんか。
また、同じ問題です。設定はプロジェクトでは、ユーザーのオプションアプリをインストール"は、現在のユーザにのみ"または"すべてのユーザー:.その結果、データベースファイルのうち、現在のユーザまたはすべてのユーザー用データフォルダにまとめた。この設定が書きこれらの情報のどこかでアプリケーションし、後で取り出すので、アクセスデータベースです。どのようにとらわれないので知りたいアプリケーションデータフォルダを見ていますか?
これを避けるために発行し、どんなインストールデータベースのすべてのユーザー用データフォルダを問わずされた場合、アプリケーションを設置したユーザーはすべてのユーザー私はもちろん、そのユーザーがインストールと同じコンピュータを上書きせずに互いのデータです。このようなリモートの可能性がることにならないようにしたいと考えます。
最初のパズルピースもん こちらの:
Form_Load(object sender, EventArgs e)
{
// Set the db directory to the common app data folder
AppDomain.CurrentDomain.SetData("DataDirectory",
System.Environment.GetFolderPath
(System.Environment.SpecialFolder.CommonApplicationData));
}
在していることを、確認する必要があり、データソースのDataDirectoryプレースホルダ.この作品から こちらの.のデータセットデザイナーのデータセットの特性を開き、接続ノードの編集ConnectionString物件を探して
Data Source=|DataDirectory|\YourDatabase.sdf
その後ライマンEnders Knowles指示のもと、上からの追加方法についてはアプリケーションが一般的データフォルダの設定をプロジェクトにデータベースファイルとフォルダにまとめた。
その後、次いで移の提案から、を確認しました"をClickOnceセキュリティ設定"を選択し"このメンバーとステークホルダー。
その後、応用展開アプリコットビスタのデータベースファイルにアクセスの両方を読み込みおよび書き込みます.
私は以下のようなコンセプトがあったから
右クリックしてインプロジェクトのソリューションエクスプローラのとり"表示→ファイルシステム"です。
右クリックし"ファイルシステムのターゲット機"およびピを追加する"特別フォルダ->カスタムフォルダ".
名前の変更、カスタムフォルダへ"アプリケーションが一般的データフォルダです。" (こんの名前に使用される結果のフォルダをかけて食べるという習慣があり継続を支援することを目標にします。)
変更のフォルダのDefaultLocation産"[CommonAppDataFolder][メーカー][ProductName]".注の類似性の高いDefaultLocationのアプリケーションフォルダなどの奇数の使用の単一のバックスラッシュ.
マーベルの一瞬のばな否定)があるようにフォルダの名前のプロパティ"本物件"といいます。 赤ちゃんの狂犬病人が出てくることか
変更のフォルダの財産"COMMONAPPDATAFOLDER".
string userAppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
さんがこの場です。
ものを追加した場合、民間部門へのアプリの設定ファイル
を指定できる追加フォルダをチェックにアプリです。
場合に何が言いたいのは、たいへのインストールすることができ 他のフォルダの機、ここが問題です。基本的には全体の理由によるMSを制限しているところ は悪意のあるコードオフマシンのユーザが知らなか などに設置する。、
なので、これは動作しませんが必要な場合は別のディレクトリです。この修正がなされることはできるのかを指定 内でアプリ検索のためのファイル......