トップ回答者
インストーラ

質問
-
お世話になっております。
VS2005を使用して、ASP.NET(C#)+MDBで、データベース更新WEBアプリケーションを作成しております。
そのインストーラを先日から作成しているのですが、カスタム動作に、インストーラクラス(C#)を作成して実装したりしてなんとか、正常にインストール行え、正しく動作しているかのテストを行なったところ、WEBからDBの内容を参照することは問題なかったのですが、更新すると失敗します。いろいろ調べてみると App_DataフォルダにMDBファイルを入れているのですが、そのフォルダにASPNETユーザを追加して書き込み権限を与える必要があると調べてみるとわかりましたので、手動でやってみると問題なくDBへの更新がWEBアプリからできました。
質問なんですが、インストーラで、このASPNETユーザをApp_Dataフォルダに書き込み権限をつける方法は無いんでしょうか。
public override void Commit(System.Collections.IDictionary savedState)関数で、権限をつける方向で調査したのですが、最近C#を始めたばっかりなので、どこから調べるものかと悩んでおります。
C#でフォルダにユーザと権限をつける方法か、VS2005のセットアップにてできるものなのか。。。
ご教授ください。
回答
-
アクセス権の変更程度なら、ADSIを使うまでもないような気がするのですが・・・
FileSystemAccessRule クラスは、ユーザー アカウント、提供するアクセスの種類 (読み取り、書き込みなど)、およびそのアクセス権を許可するか拒否するかを指定する、基になるアクセス制御エントリ (ACE) の抽象化を表します。このクラスは、アクセス規則を子オブジェクトに反映する方法も指定できます。
FileSystemAccessRule クラスを使用して、新しいアクセス規則を作成します。FileSecurity クラスまたは DirectorySecurity クラスを使用すると、規則を永続化できます。ダメ?
すべての返信
-
ご返事ありがとうございます。
http://support.microsoft.com/kb/899553/ja を参考に実装することでアクセス権限を設定することができました。
但し、ADsSecurity.dllが必要で、SDKをインストールすれば使用できるのですが、クライアントPCにそれを入れてもらうわけにいかず、ADsSecurity.dllだけをインストーラに入れられれば。。。と言う感じです。マージモジュールもSDKにはなかったので、再配布できないのかな。。
またしてもあと一歩です。。
-
アクセス権の変更程度なら、ADSIを使うまでもないような気がするのですが・・・
FileSystemAccessRule クラスは、ユーザー アカウント、提供するアクセスの種類 (読み取り、書き込みなど)、およびそのアクセス権を許可するか拒否するかを指定する、基になるアクセス制御エントリ (ACE) の抽象化を表します。このクラスは、アクセス規則を子オブジェクトに反映する方法も指定できます。
FileSystemAccessRule クラスを使用して、新しいアクセス規則を作成します。FileSecurity クラスまたは DirectorySecurity クラスを使用すると、規則を永続化できます。ダメ?
-
すみません、FileSystemAccessRule クラスで問題なかったです。
ありがとうございました。