【问题标题】:Access Denied when Reading/Writing to Program FIles读取/写入程序文件时访问被拒绝
【发布时间】:2010-09-22 19:52:42
【问题描述】:

我有一个小程序安装在程序文件的自定义文件夹中,但是当我尝试读取或写入需要操作的文件时,程序会引发访问被拒绝异常。当然,在获得用户许可的情况下,我如何提升程序。

【问题讨论】:

    标签: c# access-denied elevation


    【解决方案1】:

    我猜你是在 Vista 下运行的?在 Vista 中,我认为您不允许读取/写入 Program Files 下的文件,您应该将数据文件放在 Documents and Settings 中。

    【讨论】:

    • 不,它在 XP 中,但我也打算在 Vista 中运行它
    • 您可以读取 Program Files 文件夹中的文件,除非您有提升的权限,否则不要写入它们。
    • 我怎样才能获得提升的权限?
    【解决方案2】:

    解决读取时访问被拒绝的异常。请将文件访问指定为已读取,这将解决读取时拒绝访问的异常

    e.g. fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
    

    【讨论】:

      【解决方案3】:

      您可以使用 ClickOnce API 完成所需的一切。如果您有多个部分(例如,多个 EXE),则需要将它们包含在您的包中。

      据我所知,唯一不支持(ClickOnce)的场景是验证代理。

      【讨论】:

        【解决方案4】:

        ClickOnce 支持安装任意数量的可执行文件,但您可能需要手动将它们包含在清单定义中。

        为了正确并在最少用户访问 (LUA) 和用户访问控制 (UAC) 的限制下正常运行,您的应用程序根本不应写入程序文件文件夹,除非在安装期间。如果您必须这样做,您应该包含一个清单文件,表明您的应用程序需要提升的权限才能运行。 (如果您在 Vista 上运行,您还可以设置兼容模式。)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-26
          • 2018-11-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多