3

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

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

创建这个文件夹很容易,但它需要一个desktop.ini包含正确内容的文件,以便本地化名称(否则无论使用哪种语言,它都会显示“启动”)。

创建此文件夹的“官方”方式是什么?
或者添加一些东西的官方方法是什么?
我更喜欢 PowerShell 或批处理命令,但任何可靠的意思都可以。

4

2 回答 2

4

我想你可以ComObject对这个特殊文件夹做一些事情:

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

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

于 2014-11-23T21:16:48.847 回答
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,所以我不知道如何调用它。也许有人可以给出更好的答案。

于 2014-11-23T13:42:38.127 回答