gpt4 book ai didi

c - 管理员权限的替代方案 - fopen 不会在 Windows 中创建 C :\temp. txt

转载 作者:行者123 更新时间:2023-11-30 17:29:38 31 4
gpt4 key购买 nike

在我当前的项目中,我喜欢使用 fopenfopen_s 通过“w”选项创建文件。

使用 QT GUI,用户可以选择任何文件名,这基本上是文件对话框的返回字符串 - 类似于 Windows 对话框。

QFileDialog::getSaveFileName(this,"Save as...","","all files (*.*)");

但是,取决于它是否被创建的文件名。

例如,我可以在构建目录“C:/SVN/builds/GUI/temp.txt”中写入文件
我可以在 Windows 桌面 'C:/Users/XXX/Desktop/temp.txt' 上创建文件
我什至可以在其他构建目录“C:/SVN/builds/foo/bin/Release/temp.txt”中创建文件
但是 fopen 不允许我创建“C:/temp.txt”并返回“访问被拒绝”(errorno 13)

我的问题可以按照此处所述解决:https://stackoverflow.com/a/4735652/2220850
但这实际上需要用户拥有管理员权限才能使我愚蠢的小工具正常运行。

那么是否有其他方法可以获取写入用户从 GUI 中选择的文件的权限?
或者至少对于用户和我来说,是否有一种方法可以知道我们的工具可能会或可能不会在磁盘上的哪个位置创建文件?

干杯

最佳答案

我认为你无法以干净的方式解决这个问题。有些文件夹禁止非管理员用户访问。就是这样(无需调整操作系统设置)。

向用户显示一条明智的错误消息,例如“访问被拒绝(您可能需要管理员权限才能写入此目录,请选择您可以写入的目录)”可能是最好的方法。

关于c - 管理员权限的替代方案 - fopen 不会在 Windows 中创建 C :\temp. txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25569850/

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