Назад | Перейти на главную страницу

Запускать программу при старте, отдельно и от имени другого пользователя?

Мне нужно запустить dnscrypt-proxy:
1. запускаться автоматически при запуске или при входе в систему
2. безоконный (не прикреплен к cmd.exe)
3. как другой пользователь (не как мое имя пользователя)

Если я использую cmd.exe runas, то dnscrypt-proxy.exe также закроется, когда я закрою cmd.exe. Он не отключается от cmd.exe:

runas /savecred /user:anotheruser "path-to\dnscrypt-proxy.exe"

Запуск dnscrypt-proxy.exe в качестве службы запустит его отдельно, но как я могу заставить его также работать как другой пользователь?

Я хотел бы использовать любые программы, которые уже поставляются с Windows 10 Home, а не полагаться на стороннее программное обеспечение.

Я пробовал использовать cmd.exeс start и runas но безрезультатно.
Я пробовал использовать services.msc и taskschd.msc но безрезультатно.

Единственное, что сработало, - это сценарий PowerShell. Поместите эти строки в .ps1 файл в C:\Users\yourusername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\filename.ps1 и будет работать по назначению. (Наверное C# тоже будет работать, но я не исследовал это.)

$username = "otherusername"
$password = "password"

$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))

Set-Location "C:\Program Files\dnscrypt-proxy-win64"
Start-Process -FilePath ".\dnscrypt-proxy.exe" -Credential ($credentials) -ArgumentList "--resolver-name=dnscrypt.eu-dk
 --resolvers-list=dnscrypt-resolvers.csv" -WindowStyle Hidden

Start-Sleep -Seconds 5

if (Get-Process | Where-Object {$_.path -eq "C:\Program Files\dnscrypt-proxy-win64\dnscrypt-proxy.exe"})
{
    # program is running
} else {
    # program is NOT running
    New-Item -ItemType file -Path C:\Users\yourusername\Desktop\dnscrypt-proxy-failed-to-start.txt
}

Вы можете попробовать использовать start команда для запуска команды runas detached.

C:\start runas /savecred /user:anotheruser "path-to\dnscrypt-proxy.exe"

(здесь вы можете найти дополнительную информацию о команде запуска http://www.robvanderwoude.com/ntstart.php)