我写了一个python小工具,安装在C:\Program Files (x86)\appname
目录下,可是无法创建和读写文件,出现permission denied
错误提示。
之前程序是可以在C:\Users\XXX\AppData\Local\VirtualStore\Program Files (x86)
创建文件的,因为改了一大堆东西,而且代码也很长,就不贴代码了。
如何做才能在C:\Users\XXX\AppData\Local\VirtualStore\Program Files (x86)\appname
创建文件,不关闭UAC,不使用管理员权限。
就像这样的代码:
# -*- coding: utf-8 -*-
with open("a.txt","w")as f:
pass
操作系统:windows 10 专业版 1607 开启UAC
python 2.7.11
跟目錄有關係,windows下這個目錄需要管理員權限,可以去其他目錄例如E:AC目錄下操作檔
補充一下吧。
我希望使用的是UAC虛擬化,但是是windows不提倡的做法。問題問的是UAC虛擬化失敗的原因和處理方法。我之前是可以虛擬化成功的,不知道為什麼失敗了。
另外給出windows推薦的方式。把檔案建立在其他目錄下。用
os.getenv('ALLUSERSPROFILE')
或者os.environ.get('ALLUSERSPROFILE')
获取系统环境变量,然后构造路径。相关的变量还有LOCALAPPDATA
和APPDATA
分別對應不同的目錄。或許用合適的方式,這問題就不存在了。還是取得系統變數寫入檔案比較好,而不是在C碟或其他磁碟建立資料夾,萬一沒有其他DEF盤符呢,或是係統盤符不是C碟呢?程式不該寫死了,最好照微軟的建議和大家約定的做法去做。最後感慨一下,segmentfault還不夠活躍,我提的問題基本上是自問自答。再吐槽一下,文字編輯器不好用。UAC相關連結
可以對目錄權限做劃分,如果一定要在這個目錄下建文件,就給這個資料夾可寫權限,繼承權限就看你需求了