2014-11-22 59 views
3

我编写了很多东西来管理我公司的计算机。我经常需要将快捷方式添加到用户的个人启动文件夹中(没有GPO)。创建启动文件夹 - Windows

默认情况下,Windows 8/8.1没有个人启动文件夹。
它的位置是C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\

这是很容易创建该文件夹,但它需要一个desktop.ini文件进去,用正确的内容,进行本地化(否则它会显示“启动”任何语言)的名称。

什么是“官方”的方式来创建此文件夹?
或者什么是官方添加东西的方法?
我宁愿PowerShell或批处理命令,但无论可靠的意思是好的。

回答

4

我想你可以为这个特殊的文件夹都与ComObject东西:

$startup = (New-Object -ComObject Shell.Application).NameSpace(0x07) 

顺便说一句,如果我在运行框中输入shell:startup + [R)我Win 8.1系统,它指引我到我的个人启动文件夹(C:\Users\User\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)。

+1

Win8和Win2012用户在程序创建之前没有启动文件夹(或者可能是预成像/预安装的,但有了Windows库,没有启动文件夹)。在这种情况下,shell:startup无处不在,并且不会创建文件夹。 – 2014-11-23 21:39:35

+1

你给的命令完美无缺。测试Win8和Win2012。当启动文件夹不存在时,它立即创建。非常感谢 ! – 2014-11-23 21:48:29

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使用它,但没有找到如何。我想我必须提出一个新问题。 – 2014-11-23 15:20:34