我需要检查当前用户是否在Program Files
文件夹中具有写权限
主要问题发生在Vista / 7中 - 如果我只是尝试在此位置创建临时文件,我会得到一个异常,即使用户可以使用Windows资源管理器执行此类操作(允许UAC提升后)。听起来很合理,因为流程本身并没有以管理员权限运行
然后我尝试使用this解决方案,但我总是回到“真实”,即使我尝试使用标准(非管理员)用户运行它。
我最终希望能够回答的是,如果用户尝试在Program Files
内创建目录,他是否需要提供管理员凭据,或者只需单击“继续” UAC是否足够?
我正在寻找一种方法来回答这个问题,而不是自己提出UAC弹出窗口(任何类型)。有没有相对简单的方法呢?
感谢您提供我使用UserData文件夹,但我只需要知道用户是否在该文件夹中具有写入权限,以便我可以决定是否应该尝试执行自动更新(运行msi)或不。
答案 0 :(得分:6)
更好的解决方案是将应用程序数据存储在您应该的位置:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
答案 1 :(得分:3)
坚持规则会更好。请注意,并非所有用户都可以通过UAC提升。而且你可以试着写它并且mays似乎成功但是Vista / Win7'虚拟化'你的写作在其他地方。
由于您标记了此C#和Windows,请查看
string dataPath =
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
答案 2 :(得分:0)
如果没有用户同意,ProgramFiles位置不允许写访问,这是有充分理由的。你必须要么
选项1和2有严重的缺点,所以我建议选择选项3.这种方式也可以被其他应用程序使用(例如FireFox)。