VB2005でフォルダやファイルにアクセス権を追加する
開発環境のIDがadministratorsグループに属していて開発したプログラムは、リリースした時に、一般ユーザの人が使うとエラーになる場合があります。
たとえば、CドライブのProgram Files配下は、一般ユーザではアクセス権がありません。
なので、ここにログファイル等を出力しているプログラムは、一般ユーザではアクセスエラーになるのです。
これを回避するには、ログファイル等にフルコントロールのEveryoneを追加すればよいですね!
ネットで検索したら、良いサンプルがあったので引用メモさせて頂きます。
インストール時にadministratorsグループのIDのインストールプログラムで、以下のロジックを使って、一般ユーザがアクセスするところにフルコントロールのEveryoneを追加しときます。あくまでも、admin権限で行い、間違って一般ユーザ権限で行うとエラーします。
しかし、一般ユーザでもアクセスできるところにログファイル出力等をするようにして、上記は、ほどほどに…セキュリティに問題がでますので…。
◆フォルダのEveryoneに対し、フルコントロールの許可
Imports System.Security.AccessControl Public Class ACLSample Public Shared Sub Main() Dim DirInfo As New System.IO.DirectoryInfo("D:\test") Try Dim DirSec As DirectorySecurity DirSec = DirInfo.GetAccessControl() 'アクセス権限を指定 'Everyoneに対し、フルコントロールの許可 '(サブフォルダ、及び、ファイルにも適用) Dim AccessRule As New FileSystemAccessRule( _ "Everyone", _ FileSystemRights.FullControl, _ InheritanceFlags.ContainerInherit, _ PropagationFlags.None, _ AccessControlType.Allow) 'アクセス権限を追加 DirSec.AddAccessRule(AccessRule) DirInfo.SetAccessControl(DirSec) Catch ex As Exception Debug.WriteLine(ex.Message) End Try End Sub End Classhttp://blog.livedoor.jp/akf0/archives/51465466.html
◆ファイルのEveryoneに対し、フルコントロールの許可
Imports System.Security.AccessControl Public Class ACLSample Public Shared Sub Main() Dim FileInfo As New System.IO.FileInfo(path) Try Dim FileSec As FileSecurity FileSec = FileInfo.GetAccessControl() 'アクセス権限を指定 'Everyoneに対し、フルコントロールの許可 '(サブフォルダ、及び、ファイルにも適用) Dim AccessRule As New FileSystemAccessRule( _ "Everyone", _ FileSystemRights.FullControl, _ AccessControlType.Allow) FileSec.AddAccessRule(AccessRule) FileInfo.SetAccessControl(FileSec) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub End Classhttp://blog.livedoor.jp/akf0/archives/51465450.html
詳しくは、引用先にアクセスしてみてください!