Python:程序添加自身启动的代码(Windows)

时间:2015-10-16 20:13:56

标签: python windows

我发现程序需要将自身添加到%ALLUSERSPROFILE%\Start Menu\Programs\Startup才能自动启动。但是,如何在不了解用户个人资料的情况下这样做呢?

另外,我读到了有关正在添加到系统注册表中的程序的内容吗?我该怎么做?

我发现此代码要复制文件

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

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

1 个答案:

答案 0 :(得分:0)

警告:我在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。 (当然,尝试访问其他用户的内容时可能存在权限问题)