Как прописать программу в автозагрузку c
Автозапуск можно использовать для предоставления приложения в качестве варианта, когда пользователь подключает устройство к компьютеру. Это могут быть как устройства томов, такие как USB-устройства флэш-памяти, SD-карты или DVD-диски, так и прочие устройства, такие как камеры или проигрыватели мультимедиа. Автозапуск также можно использовать, чтобы предложить свое приложение в качестве одного из открытых для общего доступа, при котором пользователи обмениваются файлами между двумя компьютерами с помощью близкого взаимодействия (касания).
Примечание . если вы являетесь производителем устройства и хотите связать приложение Microsoft Store устройства в качестве обработчика автозапуска для вашего устройства, можно найти это приложение в метаданных устройства. Подробнее см. в разделе об автозапуске приложений Microsoft Store для устройства.
Вы можете регистрировать приложения как варианты событий автозапуска содержимого. События содержимого автозапуска возникают, когда к компьютеру подключается устройство тома, например карта памяти камеры, флэш-накопитель или DVD-диск. В этом разделе показано, как определить приложение в качестве варианта автозапуска при подключении карты памяти камеры.
С помощью этого учебника вы создали приложение, которое отображает файлы изображений или копирует их в библиотеку изображений. Вы зарегистрировали приложение для события автозапуска содержимого ShowPicturesOnArrival.
Автозапуск также создает события содержимого для содержимого, которое совместно используется на компьютерах с помощью близкого взаимодействия (касания). Вы можете использовать действия и код, приведенные в этом разделе, для обработки файлов, совместно используемых на компьютерах при помощи близкого взаимодействия. В таблице ниже перечислены события автозапуска содержимого, доступные при обмене содержимым с помощью близкого взаимодействия.
Действие | Событие автозапуска содержимого |
---|---|
Обмен музыкой | PlayMusicFilesOnArrival |
Обмен видео | PlayVideoFilesOnArrival |
Когда обмен файлами обеспечивается с помощью бесконтактного взаимодействия, свойство Files объекта FileActivatedEventArgs содержит ссылку на корневую папку, в которой находятся все файлы, открытые для общего доступа.
Шаг 1. Создание нового проекта и добавление объявлений автозапуска
Таблица 1
Параметр | Значение |
---|---|
Команда | показать |
Отображаемое имя действия | Показывать изображения |
Событие содержимого | ShowPicturesOnArrival |
Параметр Action Display Name определяет строку, отображаемую автозапуском для приложения. Параметр Verb определяет значение, передаваемое приложению для выбранного варианта. Можно указать несколько действий запуска для события автозапуска и использовать параметр команда , чтобы определить, какой вариант пользователь выбрал для приложения. Вы можете указать, какой вариант пользователь выбрал, проверив свойство verb аргументов события Startup, переданных в приложение. Можно использовать любое значение для параметра verb , за исключением открытого, который зарезервирован.
Таблица 2
Параметр | Значение |
---|---|
Команда | copy |
Отображаемое имя действия | Копировать изображения в библиотеку |
Событие содержимого | ShowPicturesOnArrival |
Шаг 2. Добавление пользовательского интерфейса XAML
Откройте файл MainPage.xaml и добавьте следующий код XAML в раздел по умолчанию.
Шаг 3. Добавление кода инициализации
На этом этапе код проверяет значение команды в свойстве Verb, которое является одним из аргументов запуска, передаваемых приложению во время события OnFileActivated. Затем код вызывает метод, связанный с вариантом, который выбрал пользователь. Для события памяти камеры автозапуск передает приложению корневую папку запоминающего устройства камеры. Вы можете получить эту папку из первого элемента свойства Files.
Откройте файл App.xaml.cs и добавьте следующий код в класс App.
Примечание . Методы и CopyImages добавляются в следующие шаги.
Шаг 4. Добавление кода для отображения изображений
В файле MainPage.xaml.cs добавьте следующий код в класс MainPage.
Шаг 5. Добавление кода для копирования изображений
В файле MainPage.xaml.cs добавьте следующий код в класс MainPage.
Шаг 6. Сборка и запуск приложения
- Нажмите клавишу F5 для выполнения сборки и развертывания приложения (в режиме отладки).
- Чтобы запустить приложение, вставьте карту памяти камеры или другое запоминающее устройство из камеры в компьютер. Затем в списке вариантов автозапуска выберите один из вариантов событий содержимого, который вы указали в файле package.appxmanifest. Этот пример кода только показывает или копирует изображения в папке DCIM на карте памяти камеры. Если карта памяти камеры хранит изображения в папке АВЧД или ПРИВАТЕ\АЧД, необходимо соответствующим образом обновить код. Примечание . Если у вас нет карты памяти камеры, можно использовать флэш-накопитель, если в корне есть папка с именем дЦим , а в папке дЦим есть вложенная папка, содержащая изображения.
Вы можете зарегистрировать приложения в качестве вариантов для событий автозапуска устройств. События AutoPlay устройства возникают при подключении устройства к компьютеру.
В этом разделе показано, как определить приложение в качестве варианта AutoPlay при подключении камеры к компьютеру. Приложение регистрируется в качестве обработчика для события впд\имажесаурцеаутоплай . Это распространенное событие, которое вызывается системой переносного устройства Windows (WPD) при уведомлении камерами или другими устройствами обработки изображений о том, что они являются источниками изображений (ImageSource), использующими MTP. Подробнее см. в разделе о переносных устройствах Windows.
Важно!Windows. API Devices. Portable. Сторажедевице являются частью семейства настольных устройств. Приложения могут использовать эти API только на устройствах Windows 10 из семейства настольных устройств, например компьютерах.
Шаг 1. Создание нового проекта и добавление объявлений автозапуска
Шаг 2. Добавление ссылки на сборку для настольных расширений
API, необходимые для получения доступа к хранилищу на переносном устройстве Windows, Windows.Devices.Portable.StorageDevice, являются частью семейства настольных компьютеров. Это означает, что для использования этих API требуется специальная сборка и что эти вызовы будут работать только на устройстве из семейства настольных устройств (например, компьютере).
- В Обозревателе решений щелкните правой кнопкой мыши Ссылки и выберите Добавить ссылку.
- Разверните папку Универсальные приложения для Windows и выберите Расширения.
- Выберите Windows Desktop Extensions for the UWP (Расширения Windows Desktop для UWP) и нажмите ОК.
Шаг 3. Добавление пользовательского интерфейса XAML
Откройте файл MainPage.xaml и добавьте следующий код XAML в раздел по умолчанию.
Шаг 4. Добавление кода активации
Код на этом этапе ссылается на камеру как на StorageDevice путем передачи идентификатора сведений устройства методу FromId. Идентификатор сведений устройства можно получить путем отправки аргументов события как DeviceActivatedEventArgs и последующего получения значения из свойства DeviceInformationId.
Откройте файл App.xaml.cs и добавьте следующий код в класс App.
Примечание . Метод добавляется на следующем шаге.
Шаг 5. Добавление кода для отображения сведений об устройстве
Вы можете получить информацию о камере из свойств класса StorageDevice. Код на этом этапе выводит имя устройства и другую информацию для пользователя при запуске приложения. Затем код вызывает методы GetImageList и GetThumbnail, которые будут добавлены на следующем этапе, для отображения эскизов изображений, сохраненных в камере.
В файле MainPage. XAML. cs добавьте следующий код в класс MainPage .
Примечание . Методы и GetThumbnail добавляются на следующем шаге.
Шаг 6. Добавление кода для отображения изображений
Код на этом этапе отображает эскизы изображений, сохраненных в камере. Код выполняет асинхронные вызовы камеры, чтобы получить эскиз изображения. Однако следующий асинхронный вызов не выполняется до завершения предыдущего. Это гарантирует, что единовременно к камере осуществляется только один запрос.
В файле MainPage. XAML. cs добавьте следующий код в класс MainPage .
Шаг 7. Сборка и запуск приложения
- Нажмите клавишу F5 для выполнения сборки и развертывания приложения (в режиме отладки).
- Для запуска приложения подключите камеру к компьютеру. Затем выберите приложение из списка вариантов автозапуска. Примечание . Не все камеры объявляются для события устройства автозапуска впд\имажесаурце .
Настройка съемного носителя
Устройство тома, например карту памяти или флэш-накопитель, можно определить как устройство AutoPlay, когда устройство тома подключается к компьютеру. Это особенно полезно, когда требуется назначить автозапуск для конкретного приложения, чтобы представлять пользователю устройство тома.
В этом разделе показано, как определить устройство тома в качестве устройства автозапуска.
Чтобы определить устройство тома в качестве устройства AutoPlay, добавьте файл autorun.inf в корневой диск устройства. В файле autorun.inf добавьте ключ CustomEvent в раздел AutoRun. Когда устройство тома подключится к компьютеру, функция AutoPlay найдет файл autorun.inf и будет рассматривать том как устройство. AutoPlay создаст событие AutoPlay с помощью имени, которое вы ввели для ключа CustomEvent. Затем можно создать приложение и зарегистрировать его в качестве обработчика для события AutoPlay. При подключении устройства к компьютеру AutoPlay отобразит ваше приложение как обработчик для устройства тома. Подробнее о файлах autorun.inf см. в разделе о записях autorun.inf.
Шаг 1. Создание файла autorun.inf
В корневой диск устройства тома добавьте файл с именем autorun.inf. Откройте файл autorun.inf и добавьте в него следующий текст.
Шаг 2. Создание нового проекта и добавление объявлений автозапуска
Откройте файл Package.appxmanifest и выберите вкладку Возможности, затем выберите возможность Съемные носители. Это дает приложению доступ к файлам и папкам на съемных устройствах хранения.
В файле манифеста перейдите на вкладку Объявления и в раскрывающемся списке Доступные объявления выберите Автозапуск содержимого и нажмите кнопку Добавить. Выберите новый элемент AutoPlay Content (Автозапуск содержимого), добавленный к списку Supported Declarations (Поддерживаемые объявления).
Примечание . Кроме того, можно добавить объявление устройства автозапуска для пользовательского события автозапуска.
В разделе Действия при запуске объявления событий Автозапуск содержимого для первого действия запуска введите значения в приведенной ниже таблице.
В раскрывающемся списке Доступные объявления выберите Сопоставления типов файлов и нажмите кнопку Добавить. В свойствах объявления сопоставления нового типа файлов задайте для поля Отображаемое имя значение Показать файлы ms и поле имени для ms_association. В разделе Поддерживаемые типы файлов нажмите кнопку Добавить. Для поля Тип файла установите значение .ms. Для событий автозапуска содержимого средство автозапуска отфильтровывает любые типы файлов, которые явно не связаны с приложением.
Сохраните и закройте файл манифеста.
Значение Событие содержимого представляет собой текст, который вы указали для ключа CustomEvent в файле autorun.inf. Параметр Action Display Name определяет строку, отображаемую автозапуском для приложения. Параметр Verb определяет значение, передаваемое приложению для выбранного варианта. Можно указать несколько действий запуска для события автозапуска и использовать параметр команда , чтобы определить, какой вариант пользователь выбрал для приложения. Вы можете указать, какой вариант пользователь выбрал, проверив свойство verb аргументов события Startup, переданных в приложение. Можно использовать любое значение для параметра verb , за исключением открытого, который зарезервирован.
Шаг 3. Добавление пользовательского интерфейса XAML
Откройте файл MainPage.xaml и добавьте следующий код XAML в раздел по умолчанию.
Шаг 4. Добавление кода активации
Код на этом этапе вызывает метод для отображения папок в корневом диске устройства тома. Для событий автозапуска содержимого средство автозапуска обрабатывает корневую папку запоминающего устройства в аргументах запуска, передаваемых в приложение во время события OnFileActivated. Вы можете получить эту папку из первого элемента свойства Files.
Откройте файл App.xaml.cs и добавьте следующий код в класс App.
Примечание . Метод добавляется на следующем шаге.
Шаг 5. Добавление кода для отображения папок
В файле MainPage.xaml.cs добавьте следующий код в класс MainPage.
Шаг 6. Сборка и запуск приложения
- Нажмите клавишу F5 для выполнения сборки и развертывания приложения (в режиме отладки).
- Для запуска приложения вставьте карту памяти или другое запоминающее устройство в компьютер. Затем выберите приложение из списка вариантов обработчика автозапуска.
Ссылка события автозапуска
Система автозапуска позволяет зарегистрировать приложение для различных событий, связанных с подключением устройств и носителей информации (дисков). Чтобы зарегистрировать приложение для событий автозапуска содержимого, необходимо включить возможность Съемные носители в манифесте пакета. В следующей таблице представлены события, для которых вы можете зарегистрировать приложение, а также ситуации, в которых они создаются.
Вы можете настроить автозапуск таким образом, чтобы пользовательское событие автозапуска содержимого создавалось с помощью записи CustomEvent в файле autorun.inf для тома. Подробнее см. Записи Autorun.inf.
Вы можете зарегистрировать приложение в качестве обработчика событий автозапуска содержимого или устройства автозапуска, добавив расширение для файла package.appxmanifest приложения. Если вы используете Visual Studio, можно добавить объявление Автозапуск содержимого или Автозапуск устройства на вкладке Объявления. Если вы редактируете непосредственно файл package.appxmanifest для приложения, добавьте элемент Расширение в манифест пакета, который задает windows.autoPlayContent или windows.autoPlayDevice в качестве Категории. Например, следующая запись в манифесте пакета добавляет расширение Автозапуск содержимого, чтобы зарегистрировать приложение в качестве обработчика события ShowPicturesOnArrival.
Конечно же, вы видели множество программ, запускающихся автоматически во время загрузки системы. В Windows есть немало способов добавить программу в автозагрузку. Сегодня мы рассмотрим наиболее простой и популярный способ, который заключается в добавлении специальной записи в реестр. Разумеется, как и ранее, мы будем писать программу на Си и Windows API.
Для решения задачи нам понадобятся следующие процедуры.
GetModuleFileName записывает в буфер szFileName полный путь до файла, содержащего заданный модуль, загруженный текущим процессом. Если hModule == NULL, возвращается полный путь до исполняемого файла текущего процесса. Аргумент dwChars должен быть равен размеру буфера в TCHAR’ах. В случае ошибки процедура возвращает ноль, в случае успеха — значение, отличное от нуля.
GetWindowsDirectory записывает в буфер szWinPath путь до каталога Windows, который «C:\WINDOWS», «Z:\WINNT» и так далее. Аргумент dwChars должен быть равен размеру буфера в TCHAR’ах. В случае ошибки процедура возвращает ноль, в случае успеха — значение, отличное от нуля.
Процедура CopyFile копирует файл szFrom в szTo. Если файл с именем szTo уже существует, то процедура перезаписывает его в случае, если bFailIfExists == FALSE, и завершается с ошибкой иначе. В случае ошибки возвращается ноль, в случае успеха — значение, отличное от нуля.
RegOpenKey открывает заданный ключ реестра и записывает хэндл открытого ключа в hKey. Первый аргумент — это либо хэндл открытого или созданного ранее ключа, либо одно из предопределенных значений, например, HKEY_USERS, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE и так далее. В аргументе szSubKey передается имя ключа, который требуется открыть. Это должен быть подключ ключа, переданного первым аргументом. В случае успеха процедура возвращает ERROR_SUCCESS. В случае ошибки возвращается одно из значений, определенных в Winerror.h. В отличие от процедур, с которыми мы работали до этого момента, RegOpenKey никак не связана с GetLastError.
Процедура RegSetValueEx устанавливает значение, а также тип, заданного ключа реестра и принимает следующие аргументы. Слева направо — хэндл ключа реестра, имя устанавливаемого значения, зарезервированный аргумент, тип устанавливаемого значения, указатель на значение, размер значения в байтах, включая завершающий ноль для строк. С возвращаемыми значениями все обстоит так же, как и в случае с RegOpenKey.
RegCloseKey закрывает хэндл, соотвествующий ключу реестра. Возвращаемые значения — как у RegOpenKey и RegSetValueEx. Помимо названных процедур для работы с реестром существует великое множество других, но они устроены аналогично и в рамках данной заметки нам не понадобятся.
А теперь — решение:
BOOL SelfAutorun ( ) {
HKEY hKey = NULL ;
LONG lResult = 0 ;
TCHAR szExeName [ MAX_PATH + 1 ] ;
TCHAR szWinPath [ MAX_PATH + 1 ] ;
GetModuleFileName ( NULL , szExeName , STRLEN ( szExeName ) ) ;
GetWindowsDirectory ( szWinPath , STRLEN ( szWinPath ) ) ;
lstrcat ( szWinPath , L " \\ Autorun.exe" ) ;
if ( 0 == CopyFile ( szExeName , szWinPath , FALSE ) ) {
return FALSE ;
}
lResult = RegOpenKey (
HKEY_LOCAL_MACHINE ,
L "Software \\ Microsoft \\ Windows \\ CurrentVersion \\ Run" ,
& hKey ) ;
if ( ERROR_SUCCESS != lResult ) {
return FALSE ;
}
RegSetValueEx ( hKey , L "Autorun" , 0 , REG_SZ , ( PBYTE ) szWinPath ,
lstrlen ( szWinPath ) * sizeof ( TCHAR ) + 1 ) ;
RegCloseKey ( hKey ) ;
return TRUE ;
}
INT main ( ) {
SelfAutorun ( ) ;
MessageBox ( NULL , L "Hello!" , L "Autorun" , 0 ) ;
ExitProcess ( 0 ) ;
}
Если теперь скомпилировать и запустить программу, она будет запускаться при каждой загрузке Windows. При этом в каталоге C:\WINDOWS появится файл Autorun.exe, а через regedit.exe будет видна соответствующая запись в реестре. Разумеется, все это будет работать, только если вы сидите под админом. Простой пользователь не имеет прав на запись в C:\WINDOWS, а также в ветвь реестра HKLM. Однако ничто не мешает положить программу в любой другой каталог и воспользоваться ветвью реестра HKCU.
В качестве домашнего задания можете погуглить на предмет существования других способов добавления программ в автозагрузку, желательно, через реестр, и автоматизировать один из этих способов. Если хотите, можете даже разместить свой код на каком-нибудь Pastebin, а я его проверю. Ну и, как обычно, не нужно стесняться критиковать мой код, задавать вопросы или же просто делиться возникшими во время прочтения данной заметки мыслями в комментариях!
Все замечательно программа прописывается, но проблема в том, что в "Сосотяние" стоит отключено, как сделать так чтобы стало "включено"?
Простой 21 комментарий
Забавно. По идее, если в реестре есть ключ и значение к нему, то всё работает. А на всякие криворукие taskmgr-ы можно не смотреть. По факту, всё должно работать, выйдите из системы и войдите обратно или перезагрузите комп.
Ternick, перезапускал, не запускается(Программа)
(про запись смотрел через стандартный Task Manager Windows)
Olegofr3n77, Странно. Кстати, зачем оно нужно ? char arr[MAX_PATH] = < '\0' >; Насколько я понял, то это значит создать массив длинной в 256 символов и присвоить первым элементом нуль-терминатор ? Хотя нуль-терминатор обозначает конец строки, а не её начало.
Кстати он перезаписывается функцией GetModuleFileName, так что смысл этого присваивания 0;
Olegofr3n77, Забавно, но не логично. Что-то мне подсказывает, что тебе лучше стороной обходить WINAPI, ты ещё не умеешь пользоваться массивами и переменными в принципе.
Olegofr3n77, Ну так и в чём вопрос ? Шуруйте изучать банальные вещи, указатели, переменные, типы данных и пока не лезьте в самую глубину WINAPI.
Olegofr3n77, Вопрос в том, что всё работает, просто вы идёте длинным путём и скорее всего, где-то накосматили по этому и не работает, я могу вам дать подобный код который работает, но вы ничему не научитесь !
Ternick, >где-то накосматили
возможно
>я могу вам дать подобный код который работает
Так давайте, посмотрим
Olegofr3n77, Исключительно ради проверки, могу вам скинуть готовый билд, с антивирусным отчётом и того же содержания что и ваш, устроит ?
Ternick, При всем уважении, не открываю на своем пк софт в котором не уверен.
Да и все таки интересен код.
Ternick, Так смысл мне его туда закидывать? На моем пк все добавляется в автозагрузку, я говорил про статус, а не про то, что софт не добавляется
Olegofr3n77, Идеально, смени имя параметра и запусти от администратора на всякий. А также советую сделать хотя бы MessageBox, если он доходит вообще до создания ключа по пути в реестре. К слову, HKCU\..\CurrentVersion\Run создаётся сам по себе, автоматически системой. И мне не понятно зачем вы используете RegCreateKeyEx, вместо RegOpenKey.
Ternick,
От имени Администратора не помогает.
>А также советую сделать хотя бы MessageBox
Сделал, отрабатывает, но по прежнему "Состояние" остается в позиции "отключено"
Olegofr3n77, Посмотри в regedit, всё ли там нормально, у меня такой проблемы никогда не было. У меня есть VM c win10 build 2004 и всё нормально работает и там.
При написании некоторых программ, иногда требуется добавить в них функционал для добавления приложения в автозапуск системы. Пользователю будет намного удобнее и проще поставить галочку в настройках программы, вместо того, чтобы самому запускать редактор реестра и прописывать необходимые параметры.
Немного теории
Я надеюсь, что все знают как добавить вручную приложение в автозапуск через редактор реестра. Перед тем как писать код, нужно четко представлять, как это делается вручную.
Итак, запускаем стандартное приложение ОС для работы с реестром. Это должны знать все, но все же чтобы это смог сделать каждый кратко опишу. Либо C:\Windows\regedit.exe, либо Пуск -> Выполнить, написать в поле regedit, нажать ОК.
Открылся редактор реестра. Переходим по ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Раздел Run содержит строковые параметры которые содержат пути к запускаемым приложениям. Т.е. если создать строковый параметр а в качестве его значения написать полный путь до программы, то при запуске ОС это приложение автоматически запустится.
Практика
Итак, все то что я описал выше, нужно будет реализовать программно.
Код предельно прост. Опишем константу, в которой будет имя создаваемого параметра в разделе Run
Далее нужно добавить пространство имен. В нем содержатся класс RegistryKey для работы с реестром.
Теперь напишем функцию, которая будет получать параметр типа bool. Если передадим True то приложение добавится в автозагрузку, иначе удалится.
Теперь о том как это работает. Сначала в переменную ExePath получаем путь до исполняемого файла приложения. Затем создаем класс RegistryKey и переходим к разделу Run. Дальше производим анализ переданного в функцию параметра autorun. Если true, то нужно будет создать параметр с именем name и значением ExePath. Тем самым при запуске Windows, приложение будет запускаться. Если autorun = false, то нужно будет просто удалить параметр с именем name. После этого нужно будет вызвать метод Close(), для того чтобы закрыть раздел и записать его на диск.
Функция возвращает True в случае успешного добавления программы в автозагрузку и False в случае ошибки.
Осталось только вызвать функцию SetAutorunValue(). Например, выложите 2 кнопки на форму. При нажатии на одну выполните код
При нажатии на другую
Таким образом, одна кнопка будет добавлять в автозагрузку, другая убирать из автозагрузки программу.
Как программно добавить своё приложение в автозагрузку? Вопрос, с которым рано или поздно сталкивается любой разработчик. В сети Интернет можно встретить не мало примеров кода, однако некоторые важные нюансы почти всегда остаются за кадром, что может ввести начинающего разработчика в рутину поиска решения.
Вся задача сводится к правке реестра. Можно встретить множество рекомендаций, которые предлагают добавить в реестр запись где будет указан путь к исполняемому файлу, и не редко попадаются неактуальные на сегодня примеры кода, которые хорошо работали на Windows XP, но не будут работать на более новых версиях операционной системы. Если на операционной системе старше чем Windows XP попытаться добавить запись в ветку "HKEY_LOCAL_MACHINE" (как это можно встретить в некоторых примерах), то Вы наткнётесь на проблему доступа к этой ветке на запись. Манипуляции с манифестом и запуск приложения от имени администратора не сработают в автозагрузке и варианты обойти UAC достаточно проблематично реализуются. Мало кто вспоминает про такой важный параметр как домашний каталог, что также в некоторых ситуациях приводит к вылету ошибки. Если Ваше приложение записывает какие нибудь данные в файл, который хранится в том же каталоге что и исполняемый файл, и если добавить такое приложение в автозагрузку и забыть при этом корректно указать домашний каталог, то Вы получите ошибку "нет доступа в папку System32\", так как именно эта папка является домашним каталогом по умолчанию. В поисках рабочего решения для автозагрузки мне пришлось потратить немало времени, и в итоге, я решил сделать заметку по этому вопросу и поделится своим опытом, который возможно будет полезен и ещё кому нибудь.
Если коротко, то для того чтобы программно добавить приложение в автозагрузку и получить рабочий вариант необходимо выполнить следующие действия:
- Создать ярлык.
- В параметрах ярлыка не забыть указать домашний каталог.
- Внести запись в реестр и добавить путь к ярлыку в ветку "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\".
Ниже привожу код с комментариями:
Для начала нужно добавить ссылку на библиотеку Windows Script Host Object Model (раздел COM) и подключить пространство имён в самом начале программы (using IWshRuntimeLibrary;)
Комментарии
always i used to read smaller articles or reviews which as well
clear their motive, and that is also happening with this post which I
am reading at this time.
Читайте также: