我正在尝试从我的 python/tkinter 代码创建一个可由其他用户安装的可执行文件。我已经能够使用 cx_Freeze 成功执行此操作,但是,.exe 无法写入工作或指定目录中的文件。
研究这个问题后,我发现这可能是因为.exe没有适当的读/写权限。
果然,当我尝试以管理员权限运行.exe时,我能够执行相关功能。由于这有效,我想知道是否有一种方法可以在 setup.py 文件中指定用户权限的同时构建 cx_Freeze .msi 。我无法找到任何有关此的文档,因此我希望您能对此提供帮助。任何帮助是极大的赞赏!
刚刚在寻找同一问题的解决方案时遇到了这个问题,所以我想分享一下我是如何解决它的。简短版本 -C:\Program Files
不旨在成为具有任何程序权限的文件夹。
Windows 中的程序应使用 AppData 文件夹来写入本地数据,理论上不应有任何改变C:\Program Files
从安装的那一刻起。 Windows 有环境变量来告诉您应用程序数据应该保存在哪里。对我来说运行这个:
app_data_folder = os.environ['ALLUSERSPROFILE']
为我提供所有用户的共享数据文件夹(在我的例子中C:\ProgramData
)。然后,我的程序可以在其中创建一个文件夹,并以完全权限对其中的文件执行任何我想要的操作。
如果所有用户的共享数据文件夹不是您想要的,您应该使用其中之一来获取运行该程序的特定用户的 AppData 文件夹:
os.environ['APPDATA'] # in my case: 'C:\\Users\\myuser\\AppData\\Roaming'
OR
os.environ['LOCALAPPDATA'] # in my case: 'C:\\Users\\myuser\\AppData\\Local'
并重复上面所说的(在其中创建您自己的文件夹,继续根据需要保存和读取文件)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)