Вопрос или проблема
Только что заметил кое-что, когда игрался с папкой «Автозагрузка» стандартного пользователя в Windows 8.1 и Windows 10: по какой-то причине во всех моих установках Windows 10 папка автозагрузки стандартного пользователя не существует там, где должна, C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
, тогда как в Windows 8.1 она присутствует.
Я видел в интернете, что она, по-видимому, была заменена на C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
, начиная с Win7, но у меня этот путь есть в Win8.1, но нет в Win10. Win10 доходит до папки Programs, затем папка Startup не существует.
Если я вручную создам папку Startup в C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\
и помещу туда что-то, запустит ли ОС это при старте или нет?
Потому что в этом случае я не могу использовать папку Startup в ProgramData, так как .BAT файл будет самоуничтожаться после использования, но его нужно запускать при каждом первом входе нового пользователя. Поместив его в C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
, он просто будет скопирован в папку автозагрузки пользователя во время создания профиля пользователя, запустится, а затем удалит себя.
Если ручное создание папки автозагрузки не сработает, есть ли простой способ сделать то, что мне нужно? Единственный другой вариант, который я нашел, это запустить батник с условием IF, чтобы проверить, существует ли результат батника (что является ключом реестра), и если да, то не запускать, но это значит, что каждый раз, когда пользователь входит в систему, батник будет запускаться, что не идеально.
Заранее спасибо!
Хотя по умолчанию она не существует, C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
является действительным путем, если вы создадите ее вручную.
Файлы, размещенные здесь, будут скопированы в папку автозагрузки других пользователей, когда они впервые войдут в систему. Если пользователь уже входил в систему ранее и, следовательно, у него уже есть папка пользователя, это не окажет никакого влияния, пока профиль пользователя не будет удален.
Для вашего самоуничтожающегося .bat файла это, похоже, ваш лучший вариант. Я протестировал это сегодня на Windows 10 Enterprise 21H2.
В отличие от этого, та же автозагрузка для папки public
не работает, т.е. C:\Users\Public\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
.
Вместо этого, как упомянули полезные комментарии, C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
доступна в Windows 10 и выше. Кроме того, что эта папка синхронизируется между всеми пользователями, для ее модификации требуются права администратора.
Если вы выберете этот вариант, вы можете добавить проверку в ваш скрипт, чтобы убедиться, что он не выполнялся для пользователя ранее, например, вы можете создать скрытый файл в AppData пользователя и затем проверить его существование перед запуском скрипта.
Это не совсем относится к вашему конкретному случаю, но список автозагрузки в Диспетчере задач также существует сейчас, это ответ описывает, как вы можете добавлять программы в него, добавляя строковое значение в реестр HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
.
По той же логике вы также можете добавить это в реестр стандартного пользователя HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run
.
Ответ или решение
Сравнение папки автозагрузки пользователя по умолчанию в Windows 8.1 и Windows 10
Введение
В процессе работы с папкой автозагрузки для пользователя по умолчанию в Windows 8.1 и Windows 10 могут возникать вопросы, касающиеся различий в их структуре и функциональности. В данном ответе мы подробно рассмотрим эти различия и ответим на вопросы, касающиеся пользовательского опыта и разработки.
Структура и расположение папок автозагрузки
В Windows 8.1 папка автозагрузки пользователя по умолчанию располагается по следующему пути:
C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Эта папка, как и следовало ожидать, автоматически заполняется программами, которые должны запускаться с каждым новым пользователем при первом входе в систему.
В Windows 10, в отличие от Windows 8.1, вы можете заметить отсутствие папки автозагрузки по адресу, указанному выше. По умолчанию она не существует в директории пользователя по умолчанию. Это связано с изменениями, внесенными в систему, которые повлияли на порядок создания пользовательских профилей.
Однако, папка C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup по-прежнему доступна и используется для установки программ, которые необходимо запускать для всех пользователей системы. Но данная папка требует административных прав для модификации и не подходит для задач, связанных с индивидуальными настройками пользователей.
Вопрос о создании папки вручную
Если вы вручную создадите папку автозагрузки в:
C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\
Она будет работать так же, как и в Windows 8.1. Файлы, помещенные в эту папку, будут скопированы в автозагрузку нового пользователя при его первом входе в систему. Обратите внимание: если пользователь уже заходил в систему, то изменения в этой папке не отразятся на его профиле, пока он не будет удалён и заново создан.
Работа с самоуничтожающимся .BAT файлом
Ваша задача с использованием самоуничтожающегося .bat
файла наиболее эффективно решается через создание данной папки. Это позволяет запустить файл во время создания нового профиля, а затем удалить его. Ваша идея по размещению файла в папке автозагрузки пользователя по умолчанию является оптимальным решением.
Если бы вы решили использовать папку C:\ProgramData, вам бы пришлось добавлять дополнительные условия в ваш скрипт, чтобы проверять, запускался ли он ранее, что может вызвать неэффективность из-за повторного выполнения скрипта при каждом входе в систему.
Альтернативные подходы
Если возникают сложности с доступом к папкам или необходимо ограничить количество запусков вашего .BAT файла, вы можете рассмотреть возможность добавления записи в реестр. Например:
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run – позволяет добавлять элементы в автозагрузку для текущего пользователя.
- HKEY_USERS.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run – для пользователя по умолчанию, который будет запускать ваш файл во время создания нового профиля.
Заключение
Таким образом, несмотря на изменения в структуре системы с переходом на Windows 10, возможность создания папки автозагрузки вручную предоставляет гибкость в управлении запуском программ для новых пользователей. Данное решение идеально вписывается в вашу задачу, требующую однократного выполнения скрипта при первом входе пользователя в систему. Если у вас есть дополнительные вопросы или потребность в более детальном руководстве, пожалуйста, не стесняйтесь обращаться.