我想在登录前启动一个exe,我正在尝试使用Python来实现。以下是我尝试在定义here的SMWinservice
的地方使用的示例代码。
# imports are there
class MyService(SMWinservice):
_svc_name_ = 'testService1'
_svc_display_name_ = 'Test Service 1'
_svc_description_ = 'Test ServiceFramework 1 Description'
def start(self):
self.isrunning = True
def stop(self):
self.isrunning = False
def main(self):
subprocess.Popen(r'C:\Program Files\Notepad++\notepad++.exe')
# i=0
# while self.isrunning:
# with open('C:\\test1323.txt','a') as file:
# file.write(datetime.now().isoformat()+'\n')
# i=i+1
# time.sleep(5)
if __name__ == '__main__':
MyService.parse_command_line()
当我只是尝试在文件中写一些东西(查看this post并解决错误之后),上面的代码就可以正常工作。
但是,当我尝试启动服务(手动或通过重新安装PC)时,exe无法启动,并且我不明白为什么。我缺少什么或出什么问题了?我应该如何处理这样的问题。我是通过Python接触Windows功能的新手。我已经坚持了好几天,很感谢任何代码或帮助。
编辑
我将main
方法更改为以下内容。
def main()
self.process = subprocess.Popen('C:\\Program Files\\Notepad++\\notepad++.exe')
while self.isrunning:
if self.process.pid not in psutil.pids():
self.isrunning = False
with open('C:\\logs.txt','a') as file:
file.write(str(self.process.pid)+'\n')
time.sleep(5)
self.process.kill()
启动进程时,可以看到C:\logs.txt
中正在更新的进程pid。还可以看到该进程在任务管理器中以notepad ++。exe运行。但是应用程序并不在前台。有什么想法吗?
答案 0 :(得分:0)
这是由于从Windows Vista时代开始服务不能与桌面交互的限制。