0

我编写了一个程序,在用户登录时将一些文本写入“log.txt”文件(我将此程序作为任务添加到任务调度程序中,并带有触发器“登录时”)。为了检查程序是否会启动,我还添加了一些代码让它显示一个窗口。

from PySide.QtCore import *
from PySide.QtGui import *
import sys
import logging

# file writing test, failed
logging.basicConfig(filename='log.txt', level=logging.DEBUG)
logging.info('loaded logging module')

app = QApplication(sys.argv)
w = QWidget()
vbox = QVBoxLayout()
w.setLayout(vbox)

# file reading test
f = open('d:\write_file.py')
text = f.read()
f.close()

vbox.addWidget(QLabel(text))
w.show()

app.exec_()

然后重新启动系统后,我可以看到窗口显示,但“log.txt”文件甚至不存在!为什么会这样?

PS。如果有帮助,我已使用 PyInstaller 将脚本冻结为 exe

4

1 回答 1

1

任务调度程序以特定系统用户身份运行,而不是以刚刚登录的用户身份运行。这意味着您的代码没有更改用户文件的权限。

虽然您可以指定任务调度程序应该使用的用户,但您不能说“当前用户”。

你有两个选择:

  1. 将文件放入 Autostart 文件夹中,登录代码将在该文件夹中以用户身份执行该文件。

  2. 更改您打算写入的文件的权限,并授予调度程序用户写入权限。

于 2013-09-02T14:42:50.983 回答