Наконец-то руки дошли до накатить Windows 10 Pro (без твиков и т.п., MSDN), чтобы проверить всю ранее изложенную портянку. Пункт Подходим к решению основного поста не пропускаем, вся информация здесь замещает пункт Решение..
Необходимо дабы избавиться от ошибки ниже
при некорректном завершении работы программы (перезагрузка без выхода из NekoRay в трее) всегда без исключений можно ловить окошко с предложением перезапустить программу, при отказе вскоре вылетит следующее
уже есть TUN интерфейс в системе с таким названием, что указано в конфиге и вот никак с ним не получается подружиться (в диспетчере устройств он же лежит в ошибке)
Создаем скрипт, что будет удалять, при наличии, сетевой интерфейс, созданный в момент последнего запуска и запускать NekoRay..
C:\nekoray\AutorunNekoRay.ps1
# Удаляем устройства с именем "sing-tun Tunnel"
foreach ($dev in (Get-PnpDevice | Where-Object { $_.Name -like "sing-tun Tunnel" })) {
# Запускаем pnputil для удаления устройства и ждем завершения процесса
Start-Process pnputil -ArgumentList "/remove-device", "$($dev.InstanceId)" -NoNewWindow -Wait
}
# Путь к exe файлу, который находится в той же папке, что и скрипт
$exePath = Join-Path -Path $PSScriptRoot -ChildPath "nekobox.exe"
# Запускаем nekobox.exe с аргументом -tray
Start-Process -FilePath $exePath -ArgumentList "-tray"
Далее используем одно из решений ниже, чтобы он выполнялся автоматически при загрузке системы:
Что должно работать
Решение через планировщик (автоматическое выполнение скрипта выше при загрузке системы от SYSTEM). Сразу отмечу, что в трее значка NekoRay не увидите.
C:\nekoray\AutorunCreateTask.ps1
# Параметры задачи
$TaskName = "AutorunNekoRay"
$ScriptPath = "C:\nekoray\AutorunNekoRay.ps1"
$Trigger = New-ScheduledTaskTrigger -AtStartup
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -File `"$ScriptPath`""
$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
# Удаление старой задачи (если есть)
Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false -ErrorAction SilentlyContinue
# Создание новой задачи
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -Action $Action -Principal $Principal
Write-Host "Задача $TaskName успешно создана и будет выполняться при старте системы."
C:\nekoray\AutorunRemoveTask.ps1
# Название задачи
$TaskName = "AutorunNekoRay"
# Удаление задачи
try {
Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
Write-Host "Задача '$TaskName' успешно удалена."
} catch {
Write-Host "Не удалось удалить задачу '$TaskName'. Возможно, она не существует." -ForegroundColor Red
}
Далее запускаем командную строку от имени Администратора и выполняем:
powershell -ExecutionPolicy Bypass -File "C:\nekoray\AutorunCreateTask.ps1"
powershell -ExecutionPolicy Bypass -File "C:\nekoray\AutorunRemoveTask.ps1"
Что может сработать
C:\nekoray\autorunEnable.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"AutorunNekoRay"="powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File \"C:\\nekoray\\AutorunNekoRay.ps1\""
C:\nekoray\autorunDisable.reg
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"AutorunNekoRay"=-
C:\nekoray\autorunEnable.reg
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"AutorunNekoRay"="powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File \"C:\\nekoray\\AutorunNekoRay.ps1\""
C:\nekoray\autorunDisable.reg
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"AutorunNekoRay"=-
Для добавления в автозапуск запускаем созданный autorunEnable.reg, чтобы убрать из автозапуска — autorunDisable.reg.
Если все успешно
в диспетчере задач будет nekobox.exe
в диспетчере устройств сетевой интерфейс sing-box без ошибки
маршрутизация согласно описанным правилам в соответствующем конфиге