我写了一个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相关链接
可以对目录权限做划分,如果一定要在这个目录下建文件,就给这个文件夹可写权限,继承权限就看你需求了