我写了一个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
巴扎黑2017-04-18 09:41:05
It has something to do with the directory. This directory under Windows requires administrator rights. You can go to other directories such as the E:AC directory to operate files
天蓬老师2017-04-18 09:41:05
Please add it.
I hope to use UAC virtualization, but this is a practice that Windows does not advocate. The question asks about the reasons and solutions for UAC virtualization failure. I was able to virtualize successfully before, but I don't know why it failed.
Also gives the recommended method for windows. Create files in other directories. Use os.getenv('ALLUSERSPROFILE')
或者os.environ.get('ALLUSERSPROFILE')
获取系统环境变量,然后构造路径。相关的变量还有LOCALAPPDATA
和APPDATA
to correspond to different directories. Perhaps with a suitable method, this problem will disappear. It is better to obtain system variables and write them into files instead of creating folders on the C drive or other drives. What if there is no other DEF drive letter, or the system drive letter is not the C drive? The program should not be written to death. It is best to follow Microsoft's suggestions and everyone's agreed practices. Finally, I lament that segmentfault is not active enough. The questions I asked are basically self-asked and answered. Let me complain again, the text editor is not easy to use.
UAC related links
PHP中文网2017-04-18 09:41:05
You can divide directory permissions. If you must create files in this directory, give this folder writable permissions. Inheriting permissions depends on your needs