Что нового

Как добавить autoit-скрипт в автозагрузку и как убрать из автозагрузки

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

Уверен, что кто-то уже делал подобное. Нужен 100% способ добавить скрипт в автозагрузку любого windows для данного пользователя.
+ Способ, как убрать скрипт из автозагрузки. Спасибо.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Suppir
Код:
; при установленных параметрах текущий скрипт ничего не добавляет в реестр.

; авторегистрация и удаление регистрации используя ключи в ком-строке /a, /d
If $CmdLine[0]>0 Then
	Switch $CmdLine[1]
		Case '/a'
			RegRead("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName)
			If @Error Then
				RegWrite("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName, "REG_SZ", '"'&@ScriptFullPath&'"')
				MsgBox(0, 'Сообщение', 'регистрация в автозагрузке выполнена')
			Else
				If MsgBox(4, 'Сообщение', 'Ключ уже существует'&@CRLF&'Перезаписать принудительно?')=6 Then
					RegWrite("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName, "REG_SZ", '"'&@ScriptFullPath&'"')
					MsgBox(0, 'Сообщение', 'регистрация в автозагрузке выполнена')
				EndIf
			EndIf
		Case '/d'
			RegRead("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName)
			If @Error Then
				MsgBox(0, 'Сообщение', 'Ключ отсутствует'&@CRLF&'удаление не требуется')
			Else
				RegDelete("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName)
				MsgBox(0, 'Сообщение', 'Удаление ключа выполнено')
			EndIf
		Case Else; Or '/?' Or '/h' Or '/help'
			MsgBox(0, 'Сообщение', 'Поддерживаются ключи:'&@CRLF&'/a - регистрация скрипта в автозагрузке'&@CRLF&'/d - удаление регистрации в автозагрузке')
	EndSwitch
EndIf

; авторегистрация
$auto=0
If $auto = 1 Then
	RegRead("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName)
	If @Error Then RegWrite("HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName, "REG_SZ", '"'&@ScriptFullPath&'"')
EndIf

; автостарт путём создания ярлыка в атозагрузке
$Autostart=0
If $Autostart=1 Then
	$filename=StringRegExpReplace(@ScriptName, '(^.*)\.(.*)$', '\1')
	If Not FileExists(@StartupDir&'\'&$filename&'.lnk') Then FileCreateShortcut ( @ScriptFullPath, @StartupDir&'\'&$filename&'.lnk' )
EndIf

; удаление автостарта путём удаления ярлыка в атозагрузке
$DelAutostart=0
If $DelAutostart=1 Then
	$filename=StringRegExpReplace(@ScriptName, '(^.*)\.(.*)$', '\1')
	If FileExists(@StartupDir&'\'&$filename&'.lnk') Then FileDelete (@StartupDir&'\'&$filename&'.lnk')
EndIf

; пример с функцией, здесь жёсткое условие, либа автозагрузка, либо неавтозагрузка
Func _Autostart()
	$filename=StringRegExpReplace(@ScriptName, '(^.*)\.(.*)$', '\1')
	If $Autostart=1 Then
		If Not FileExists(@StartupDir&'\'&$filename&'.lnk') Then FileCreateShortcut ( @ScriptFullPath, @StartupDir&'\'&$filename&'.lnk' )
	Else
		If FileExists(@StartupDir&'\'&$filename&'.lnk') Then FileDelete (@StartupDir&'\'&$filename&'.lnk')
	EndIf
EndFunc
 
Верх