我编写了很多脚本来管理公司的计算机。我经常需要将快捷方式添加到用户的个人启动文件夹中(没有 GPO)。
默认情况下,Windows 8/8.1 没有个人启动文件夹。
它的位置是C:Users<username>AppDataRoamingMicrosoftWindowsStart Menu
创建此文件夹很容易,但它需要一个具有正确内容的desktop.ini
文件才能本地化名称(否则无论语言如何,它都会显示为"Startup")。
创建此文件夹的"官方"方法是什么?
或者添加内容的官方方法是什么?
我更喜欢PowerShell或批处理命令,但无论哪种可靠的方法都可以。
你可以用这个特殊文件夹的ComObject
做一些事情:
$startup = (New-Object -ComObject Shell.Application).NameSpace(0x07)
顺便说一句,如果我在 Win 8.1 系统上的运行框 (Win+R) 中输入shell:startup
,它会将我定向到我的个人启动文件夹 ( C:UsersUserAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
)。
据我所知,没有可靠的方法可以做到这一点。
您可以使用 [environment]::getfolderpath("Startup")
获取路径,但如果文件夹已创建,则返回的字符串为空。而且我不知道任何 API 条目来创建它。
所以你必须手动创建它:
- 检查前一个命令是否返回任何内容(如果是,只需创建快捷方式)
- 为自己创建启动文件夹。使用
[environment]::getfolderpath("StartMenu")
并向路径添加startup
- 然后创建桌面.ini文件并自行填充
- 并更新注册表
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders
(我没有检查这是否是正确的地方。[environment]::getfolderpath("Startup")
必须返回正确的值)
更新:我刚刚找到了SHGetKnownFolderPath API,如果需要,它允许创建所需的文件夹(使用dwFlags)。我不擅长PowerShell,所以我不知道如何称呼它。也许有人可以给出更好的答案。