Создать папку запуска - Windows
Я пишу много вещей для управления компьютерами в моей компании. Мне часто нужно добавлять ярлыки в личную папку запуска пользователей (без объекта групповой политики).
Windows 8 / 8.1 по умолчанию не имеет личной папки автозагрузки.
Его местоположение C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\
Создать эту папку легко, но для этого нужна desktop.ini
файл в нем, с правильным содержанием, для локализуемого имени (в противном случае оно отображается "Startup" на любом языке).
Каков "официальный" способ создания этой папки?
Или какой официальный способ добавить что-то в это?
Я бы предпочел PowerShell или пакетную команду, но любое надежное средство в порядке.
2 ответа
Я думаю, вы можете сделать что-то с ComObject
для этой специальной папки:
$startup = (New-Object -ComObject Shell.Application).NameSpace(0x07)
Кстати, если я войду shell:startup
в окне запуска (Win+R) в моей системе Win 8.1 он направляет меня в мою личную папку автозагрузки (C:\Users\User\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
).
Насколько я знаю, нет надежного способа сделать это.
Вы можете получить путь с [environment]::getfolderpath("Startup")
но возвращаемая строка пуста, если папка не была создана. И я не знаю ни одной записи API для его создания.
Таким образом, вы должны вручную создать его:
- проверьте, возвращает ли предыдущая команда что-либо (если да, просто создайте свой ярлык)
- создайте себе папку автозагрузки. использование
[environment]::getfolderpath("StartMenu")
и добавить\startup
к пути - затем создайте файл desktop.ini и заполните его самостоятельно
- и обновить реестр
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
(Я не проверял, правильное ли это место.[environment]::getfolderpath("Startup")
должен вернуть правильное значение)
ОБНОВЛЕНИЕ: Я только что нашел API SHGetKnownFolderPath, который позволяет при необходимости создать нужную папку (с dwFlags). Я не силен в PowerShell, поэтому я не знаю, как это назвать. Может быть, кто-то может дать лучший ответ.