cx_Freeze创建的可执行文件在启动时没有写权限

时间:2018-08-19 06:38:04

标签: python permissions windows-10 cx-freeze boot

我已经使用cx_Freeze创建了一个应用程序(Python 3.6),并且当它作为Python命令运行时,甚至可执行文件都可以正常运行。

但是,如果我使应用程序在Windows 10上自动启动(通过在shell:startup中创建快捷方式),它将创建或写入日志文件以引发UsersRef.child(currentUserID).addValueEventListener(new ValueEventListener(){ @Override public void onDataChange(DataSnapshot dataSnapshot){ if(dataSnapshot.exists()){ String image = dataSnapshot.child("Tuition Image").getValue().toString(); Picasso.with(AddAdsActivity.this).load(image).placeholder(R.drawable.camera).into(TuitionImage); } } @Override public void onCancelled(DatabaseError databaseError){ } }); 。我试图通过检查文件是否被锁定来创建一种解决方法,只需在文件末尾添加一个增量编号即可。

这也有效,如果我手动将日志文件设为只读,它将创建下一个日志文件,依此类推。但是通过自动启动,它会引发PermissionError,因此它可能绝对无法写入磁盘。

是否在没有给应用程序RecursionError的情况下就能够在启动时处理创建日志文件的魔力? :)

1 个答案:

答案 0 :(得分:0)

您是否尝试过让应用程序在%APPDATA%目录或%LOCALAPPDATA%目录中创建日志文件?您可以使用以下命令在Python中获取这些目录的路径:

import os
app_data_path = os.getenv('APPDATA')
local_app_data_path = os.getenv('LOCALAPPDATA')
print(app_data_path)
print(local_app_data_path)

请参见How can I get the path to the %APPDATA% directory in Python?