Python:用于程序自动启动的代码(Windows)



我发现一个程序需要将自己添加到%ALLUSERSPROFILE%Start MenuProgramsStartup中才能自动启动。但是,在不知道这个人的用户资料的情况下,我怎么做到这一点呢?

还有,我读到一些关于程序被添加到系统注册表?我该怎么做呢?

我找到了这个代码来复制文件

os.rename("path/to/current/myfile.exe", "path/to/new/desination/for/myfile.exe") 

但是我不知道当前文件的路径。每个人都有不同的用户名,所以/Bob/Downloads不会是文件所在的位置,我不知道%ALLUSERSPROFILE%在他们的计算机上的名称是什么。

警告:我正在Windows 7上测试;它应该也可以在其他Windows上运行,但我不能保证。

%ALLUSERSPROFILE%和%USERPROFILE%的值在os.environ中。

如果您的代码以下载它的用户的身份运行,那么您可以这样做:

import os
aup = os.environ.get("ALLUSERSPROFILE")
up = os.environ.get("USERPROFILE")
if aup and up:
  os.rename(os.path.join(up,"Downloads","myfile.exe")),os.path.join(aup,"Start menu","Programs","startup","myfile.exe"))
else:
    print("Oops, couldn't look up stuff in os.environ")

请注意,我不认为有一个简单的方法来获得另一个用户的个人资料;如果您在桌面上运行,并且以Alice的身份运行,但是想要获得bob的目录,那么您可以欺骗并这样做alt_user_profile = os.path.join(up,"..","bob")(即假设所有用户都在同一个父目录中);如果您运行的某个地方的用户配置文件并不都在同一个父节点中,则可能需要查看特定于Windows的API。(当然,试图进入另一个用户的东西可能会有权限问题)

最新更新