拒绝访问。读取和写入文件。授予阅读权限

Acess Denied. Reading and writing the file. Grant reading permission

安装后应用程序报错

access denied to the file PathName\BLsms.ocx

此处PatheName为完整路径

高级安装程序用于创建安装程序。

然后应用程序安装在 C Drive

如何让这些文件可读写?

我正在使用这个代码。

try
{

    this.brlmfc = new BinaryReader(new FileStream("BLsms.ocx", FileMode.Open, FileAccess.ReadWrite,FileShare.Read));
    this.brocx = new BinaryReader(new FileStream("BLrpi.lfc", FileMode.Open,FileAccess.ReadWrite));

    this.brlmc = new BinaryReader(new FileStream("rpcgh.lfc", FileMode.Open,FileAccess.ReadWrite));
    this.passkey1 = this.brlmfc.ReadString();
    this.passkey2 = this.brocx.ReadString();

    this.passkey3 = this.brlmc.ReadString();

}
catch (Exception e13)
{
    MessageBox.Show(e13.Message);
    i = 0;
}

我也在 Form Load 方法中尝试了以下代码。

FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.AllAccess, Application.StartupPath+"\BLsms.ocx");
f2.AddPathList( FileIOPermissionAccess.Read, Application.StartupPath+"\BLrpi.lfc");
f2.AddPathList( FileIOPermissionAccess.Read, Application.StartupPath+"\Brpcgh.lfc");
f2.Demand();

我假设您正在将程序安装到 C:\Program FilesC:\Program Files (x86)。不要写在那些目录中。请改用 C:\ProgramData 或用户的主目录。

我已经从 Advance Installer 设置了文件的 read/write 权限。并且工作正常。

http://www.advancedinstaller.com/user-guide/permission-dialog.html

谢谢大家。

默认情况下,用户组在程序文件等每台计算机位置没有写入权限。这是与安装无关的 Windows 标准。但是,在安装期间您可以设置任何您想要的权限。

Windows 安装程序支持自定义权限,但 Visual Studio 不提供设置它们的方法。因此 Visual Studio 中唯一的解决方案是自定义操作。

很遗憾,Visual Studio 不支持附加的自定义操作。因此,使用 XCACLS.EXE 设置权限只有在您将其包含在您的包中时才有效(它将与您的文件一起安装在目标机器上)。

更简洁但更复杂的解决方案是自己编写自定义操作(使用自定义代码)来设置所需的权限。

最快最干净的解决方案是使用不同的设置创作工具,它可以更好地控制权限。