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

タスク スケジューラは、ログオンしたばかりのユーザーとしてではなく、特定のシステム ユーザーとして実行されます。これは、ユーザーのファイルを変更する権限がコードにないことを意味します。

タスク スケジューラが使用するユーザーを指定できますが、「現在のユーザー」とは言えません。

次の 2 つのオプションがあります。

  1. ファイルを Autostart フォルダーに配置します。ここで、ユーザーとしてログイン コードによって実行されます。

  2. 書き込むファイルの権限を変更し、スケジューラーのユーザーに書き込み権限を付与します。

于 2013-09-02T14:42:50.983 に答える