在我當前的項目中,我喜歡使用fopen
或fopen_s
通過「w」選項創建文件。替代管理員權限 - fopen不會在windows中創建C: temp.txt
使用QT GUI,用戶可以選擇任何基本上是文件對話框的返回字符串的文件名 - 類似於windows對話框中已知的。
QFileDialog::getSaveFileName(this,"Save as...","","all files (*.*)");
但是,取決於文件名是否被創建。
因此,舉例來說,我可以在我的build目錄寫入文件「C:/SVN/builds/GUI/temp.txt」
我可以在Windows桌面上創建文件「C:/用戶/ XXX /臺式機/ temp.txt'
我甚至可以在其他生成目錄'C:/SVN/builds/foo/bin/Release/temp.txt'
中創建文件但是fopen
不允許我創建'C:/temp.txt 「返回‘拒絕訪問’(errorno 13
)
我的問題是可以解決的喜歡這裏描述:https://stackoverflow.com/a/4735652/2220850
但是這實際上要求用戶具有管理權我的愚蠢的小工具正常運行。
所以沒有另外一種方法來獲得用戶從GUI中選擇的文件的寫權限?
或者至少對於用戶和我來說,有一種方法可以知道我們的工具在磁盤上的哪個位置可能創建文件,也可能不創建文件?
乾杯
有Shell API可以找出放置東西的位置。 – 2014-08-29 14:44:17
「KNOWNFOLDERID」和「CSIDL」的MSDN。 – 2014-08-29 14:46:49