Только что заметил кое-что, экспериментируя с папкой «Автозагрузка» пользователя по умолчанию в 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 переходит в папку «Программы», затем «Автозагрузка» отсутствует.
Если я вручную создам папку «Автозагрузка» C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\
и поместлю в нее что-нибудь, запустит ли ОС это при запуске или нет?
Потому что в этом случае я не могу использовать папку Startup в ProgramData, так как файл .BAT самоудаляется после использования, но его нужно запускать при первом входе каждого нового пользователя. Если поместить его в C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
, он просто скопирует в собственную папку Startup пользователя во время создания профиля пользователя, запустится и затем удалит себя.
Если ручное создание папки автозагрузки не работает, есть ли простой способ сделать то, что мне нужно? Единственный другой способ, который я нашел, это запустить пакетный файл с оператором IF для поиска того, существует ли результат пакетного файла или нет (который является ключом реестра), и если да, то не запускать, но это означает, что каждый раз, когда пользователь входит в систему, пакетный файл будет запускаться, что не идеально.
Заранее спасибо!
решение1
Хотя по умолчанию он не существует, 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
.