ローカル システム アカウントとして実行される Windows サービスを作成しています。ファイルへの完全な読み取り/書き込みアクセス権があるかどうかを確認して、さらに処理を開始しようとしています。これが私のコードです:
Dim FullPath As String
FullPath = "C:\directory\file.txt"
Dim ps As Security.PermissionSet
ps = New Security.PermissionSet(Security.Permissions.PermissionState.Unrestricted)
ps.AddPermission(New Security.Permissions.FileIOPermission(Security.Permissions.FileIOPermissionAccess.AllAccess, FullPath))
ps.AddPermission(New Security.Permissions.FileIOPermission(Security.Permissions.FileIOPermissionAccess.AllAccess, IO.Path.GetDirectoryName(FullPath)))
Try
ps.Demand()
Catch ex As Security.SecurityException
System.Diagnostics.EventLog.WriteEntry("ShopLink", "File " + FullPath + " will not be parsed. " + ex.Message)
Exit Sub
Catch ex As Exception
System.Diagnostics.EventLog.WriteEntry("ShopLink", "File " + FullPath + " will not be parsed. " + ex.Message)
Exit Sub
End Try
次に、サービスを実行しているユーザー アカウントに対して、ファイルのフル アクセス許可を「拒否」に設定します。実行後、上記のコードは例外をスローせず、ファイル処理を開始できるようにします。サービスが後でファイルを変更または削除しようとすると、「アクセスが拒否されました」という例外が発生します。
助言がありますか?