发布

时间:2016-01-31 10:54:59

标签: c#

我正在开发一个具有不同功能的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);

    }

所以有人可以为这个问题提出解决方案吗?

0 个答案:

没有答案