Создать папку запуска - 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 для его создания.

Таким образом, вы должны вручную создать его:

  1. проверьте, возвращает ли предыдущая команда что-либо (если да, просто создайте свой ярлык)
  2. создайте себе папку автозагрузки. использование [environment]::getfolderpath("StartMenu") и добавить \startup к пути
  3. затем создайте файл desktop.ini и заполните его самостоятельно
  4. и обновить реестр HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders (Я не проверял, правильное ли это место. [environment]::getfolderpath("Startup") должен вернуть правильное значение)

ОБНОВЛЕНИЕ: Я только что нашел API SHGetKnownFolderPath, который позволяет при необходимости создать нужную папку (с dwFlags). Я не силен в PowerShell, поэтому я не знаю, как это назвать. Может быть, кто-то может дать лучший ответ.

Другие вопросы по тегам