gpt4 book ai didi

c# - 确定对应用程序文件夹的写入权限

转载 作者:太空狗 更新时间:2023-10-29 21:10:56 26 4
gpt4 key购买 nike

我有一个 C# 应用程序,我需要在运行期间将一些输出转储到日志文件中。我想让用户选择在哪里找到日志文件,但根据客户端请求,它需要默认到当前应用程序位置,通常是/Program Files/。

但是,当我在 Win7/Vista 机器上部署我的应用程序时,应用程序不会写入日志文件,除非我以管理员身份运行该程序。同时,它似乎在默默地处理无法写入文件的情况,因为我目前正在处理文件创建和写入过程中抛出的所有异常。

我目前正在尝试检测两者都缺乏写入权限:

A) 通过调用“Directory.GetAccessControl()”创建一个 DirectorySecurity 对象

B) 使用“SecurityManager.IsGranted(permissions)”方法检查安全权限,

但是 A 并没有像我期望的那样抛出异常,B 每次都返回 true。

我看过很多与此主题相关的帖子,但它们都提供了仅写入 Application.UserAppDataFolder 或其变体的解决方案。我的客户特别要求默认使用当前的应用程序路径,所以我至少需要找到一种方法,在写入日志文件将无声地失败时优雅地警告他们。

注意:我当前的代码可以在 Windows XP 上找到(因为没有 UAC,我假设)。基本上我需要知道的是为什么我所有的电话都告诉我写文件很顺利,而根本不会创建文件,除非我以管理员身份运行。

谢谢!

最佳答案

Windows Vista 和 7 可以将文件写入 Program Files 目录。

嗯,不是真的,但程序认为它很好。实际上,该文件被写入当前用户的 VirtualStore 目录;也就是说,在 %userprofile%\AppData\Local\VirtualStore\Program Files

您可以 include a manifest file为您的应用程序禁用此行为以获得您期望的结果。

关于c# - 确定对应用程序文件夹的写入权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4167116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com