ユーザーがホーム ディレクトリに SQL/Server バックアップを実行できるようにしたいアプリケーションがあります。SQL は Network Service アカウントで実行されているため、バックアップを試みるとファイル システムのアクセス許可エラーが発生します。次のコードといくつかのバリエーションを試して、ネットワーク アカウントを完全に制御できるようにしました。
Public Sub GiveFolderNetworkAccess(FilePath As String)
Dim SID As SecurityIdentifier = New SecurityIdentifier(WellKnownSidType.NetworkServiceSid, Nothing)
Dim FolderInfo As IO.DirectoryInfo = New IO.DirectoryInfo(FilePath)
Dim FolderAcl As New DirectorySecurity
FolderAcl.AddAccessRule(New FileSystemAccessRule(SID, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow))
FolderInfo.SetAccessControl(FolderAcl)
End Sub
FolderInfo.SetAccessControl を呼び出すと、System.UnauthorizedAccessException 例外が発生します。また、ユーザーが完全に制御できる Windows 以外のパスでコードを試してみましたが、同じ結果が得られました。任意のアイデアを歓迎します。現在、Windows 7 および .NET Framework 4 でこれをテストしています。