我正在开发一个应用程序,其中.mdf文件应该被复制到安装了MSSQL服务器的服务器上。
代码:
// for simplicity here i just put the hard coded server path in actual application i getting that programmatically.
string serverPath = "\\\\serverName\\C$\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data";
byte[] buff = null;
buff = Properties.Resources.SomeResourceFile1;
File.WriteAllBytes(serverPath + "\\" + mdfNewFileName, buff);
buff = null;
buff = Properties.Resources.SomeResourceFile2;
File.WriteAllBytes(serverPath + "\\" + ldfNewFileName, buff);
在上面的代码中我得到了Access Denied!错误,这是因为我可能无法完全访问该文件夹。所以我首先通过以下代码更改了该文件夹的访问权限:
DirectorySecurity sec = Directory.GetAccessControl(serverPath);
SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
sec.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.Modify | FileSystemRights.Synchronize, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
Directory.SetAccessControl(serverPath, sec);
现在我收到“未经授权的操作例外”。
以上两个提到的异常仅来自应用程序设置,如果我从VS2010进行调试,那么它的工作正常,但是当我创建该应用程序的设置时,我就会遇到异常。