2014-11-22 6 views
3

Я записываю много вещей для управления компьютерами в моей компании. Мне часто приходится добавлять ярлыки в пользовательскую папку автозагрузки пользователей (без объекта групповой политики).Создать папку автозагрузки - 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 в коробке запуска (Win + R) на моем Win 8.1, он направляет меня в мою личную папку автозагрузки (C:\Users\User\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup).

+1

Пользователи Win8 и Win2012 не имеют загрузочной папки до тех пор, пока программа не создаст ее (или, возможно, она не будет предварительно установлена ​​/ предустановлена. Но с запасом Windows, без папки автозагрузки). В этом случае shell: startup ведет в никуда и не создает папку. –

+1

Команда, которую вы дали, отлично работает. Протестировано на Win8 и Win2012. Когда папка запуска отсутствует, она создается немедленно. Большое спасибо ! –

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") должны вернуть правильное значение)

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

+1

SHGetKnownFolderPath, похоже, является правильным средством для этого. Я пытаюсь использовать его из PowerShell, но не знаю, как это сделать. Думаю, мне нужно открыть новый вопрос. –

Смежные вопросы