创建启动文件夹 - Windows

3
我经常编写脚本来管理公司的计算机。我经常需要把快捷方式添加到用户的个人启动文件夹中(没有 GPO 的情况下)。
Windows 8/8.1 默认没有个人启动文件夹。 其位置为 C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\ 创建这个文件夹很容易,但它需要在里面放置一个带有正确内容的 desktop.ini 文件,以使名称本地化(否则无论语言是什么都会显示“Startup”)。
有没有“官方”的方法来创建这个文件夹? 或者有没有官方的方法来把东西添加到其中? 我更喜欢使用 PowerShell 或批处理命令,但任何可靠的方法都可以。
2个回答

4
我猜您可以使用ComObject来处理这个特殊文件夹:
$startup = (New-Object -ComObject Shell.Application).NameSpace(0x07)

顺便提一下,如果我在我的Win 8.1系统中的运行框(Win+R)中输入shell:startup,它会将我导向我的个人启动文件夹(C:\Users\User\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)。


1
Win8和Win2012用户在程序创建启动文件夹之前没有启动文件夹(或者可能是预映像/预安装的。但是使用原始的Windows,没有启动文件夹)。在这种情况下,shell:startup不起作用,也不会创建文件夹。 - Gregory MOUSSAT
1
您给出的命令完美运行。在Win8和Win2012上测试通过。当启动文件夹不存在时,它会立即创建。非常感谢! - Gregory MOUSSAT

2
据我所知,目前没有可靠的方法来实现此功能。
您可以使用[environment]::getfolderpath("Startup")获取路径,但如果该文件夹从未创建,则返回的字符串为空。而且我不知道任何API条目来创建它。
因此,您必须手动创建它:
  1. 检查前一个命令是否有返回值(如果有,则只需创建您的快捷方式)
  2. 自己创建启动文件夹。使用[environment]::getfolderpath("StartMenu")并将\startup添加到路径中
  3. 然后自己创建desktop.ini文件并填充它
  4. 并更新注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders(我没有检查这是否是正确的位置。[environment]::getfolderpath("Startup")必须返回正确的值)
更新: 我刚找到了SHGetKnownFolderPath API,它允许根据需要创建所需的文件夹(使用dwFlags)。我不擅长PowerShell,所以不知道如何调用它。也许有人可以给出更好的答案。

1
SHGetKnownFolderPath似乎是正确的方法。我尝试从PowerShell中使用它,但找不到如何使用。我认为我必须提一个新问题。 - Gregory MOUSSAT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接