我正在开发一个具有不同功能的Windows窗体应用程序,其中一个功能是用户可以生成pdf格式的收据文件。
我现在面临的问题是,当我从visual studio运行该应用程序时,此功能可以正常工作,但是当我在我的电脑和其他电脑中发布并运行该应用程序时,弹出以下错误:
System.IO.DirectoryNotFoundException:C:\ Users \ USERNAME \ AppData \ Local \ Apps \ 2.0 \ B8GVHPQK.4RG \ XND3YQM7.9AB \ hsar..tion_5a44077fdab68dde_0002.0000_e0623e33977d687d \ TempReceipts at System.Security.AccessControl.NativeObjectSecurity.CreateInternal(ResourceType resourceType,Boolean isContainer,String name,SafeHandle handle,AccessControlSections includeSections,Boolean createByName,ExceptionFromErrorCode exceptionFromErrorCode,Object exceptionContext) 在System.Security.AccessControl.FileSystemSecurity..ctor(Boolean isContainer,String name,AccessControlSections includeSections,Boolean isDirectory) 在System.Security.AccessControl.DirectorySecurity..ctor(String name,AccessControlSections includeSections) 在System.IO.DirectoryInfo.GetAccessControl()
错误告诉无法找到存储收据的目录,而在visual studio中则没有这样的错误。
我已经阅读了一些,有些人说这是因为权限限制而发生的,我试图使用以下代码在目标目录中授予WRITE权限,但仍然面临同样的错误:
AddDirectorySecurity("TempReceipts", @"Resources\\TempReceipts", FileSystemRights.WriteData, AccessControlType.Allow);
以下是方法:
public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(Environment.UserName, Rights, ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
}
所以有人可以为这个问题提出解决方案吗?