VB2005でフォルダやファイルにアクセス権を追加する

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

2009-12-02 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 Class
http://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 Class
http://blog.livedoor.jp/akf0/archives/51465450.html

詳しくは、引用先にアクセスしてみてください!

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。

人のよいところをどんどん見つけよう