【发布时间】:2010-09-22 19:52:42
【问题描述】:
我有一个小程序安装在程序文件的自定义文件夹中,但是当我尝试读取或写入需要操作的文件时,程序会引发访问被拒绝异常。当然,在获得用户许可的情况下,我如何提升程序。
【问题讨论】:
标签: c# access-denied elevation
我有一个小程序安装在程序文件的自定义文件夹中,但是当我尝试读取或写入需要操作的文件时,程序会引发访问被拒绝异常。当然,在获得用户许可的情况下,我如何提升程序。
【问题讨论】:
标签: c# access-denied elevation
我猜你是在 Vista 下运行的?在 Vista 中,我认为您不允许读取/写入 Program Files 下的文件,您应该将数据文件放在 Documents and Settings 中。
【讨论】:
解决读取时访问被拒绝的异常。请将文件访问指定为已读取,这将解决读取时拒绝访问的异常
e.g. fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
【讨论】:
您可以使用 ClickOnce API 完成所需的一切。如果您有多个部分(例如,多个 EXE),则需要将它们包含在您的包中。
据我所知,唯一不支持(ClickOnce)的场景是验证代理。
【讨论】:
ClickOnce 支持安装任意数量的可执行文件,但您可能需要手动将它们包含在清单定义中。
为了正确并在最少用户访问 (LUA) 和用户访问控制 (UAC) 的限制下正常运行,您的应用程序根本不应写入程序文件文件夹,除非在安装期间。如果您必须这样做,您应该包含一个清单文件,表明您的应用程序需要提升的权限才能运行。 (如果您在 Vista 上运行,您还可以设置兼容模式。)
【讨论】: