我发现程序需要将自身添加到%ALLUSERSPROFILE%\Start Menu\Programs\Startup
才能自动启动。但是,如何在不了解用户个人资料的情况下这样做呢?
另外,我读到了有关正在添加到系统注册表中的程序的内容吗?我该怎么做?
我发现此代码要复制文件
os.rename("path/to/current/myfile.exe", "path/to/new/desination/for/myfile.exe")
但我不知道当前文件的路径。每个人都有不同的用户名,因此/Bob/Downloads
不会在文件所在的位置,我也不知道他们的计算机上会有%ALLUSERSPROFILE%
个名字。
答案 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。 (当然,尝试访问其他用户的内容时可能存在权限问题)