在启动时以分离和作为另一个用户运行程序?

在启动时以分离和作为另一个用户运行程序?

我需要运行 dnscrypt-proxy:
1. 在启动或登录时自动运行
2. 无窗口(不附加到 cmd.exe)
3. 作为另一个用户(不是我的用户名)

如果我使用 cmd.exe runas,那么当我关闭 cmd.exe 时,dnscrypt-proxy.exe 也会关闭。它不会与 cmd.exe 分离:

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

将 dnscrypt-proxy.exe 作为服务运行将使其分离运行,但我如何才能让它也以另一个用户的身份运行?

我想使用 Windows 10 Home 附带的任何程序,而不是依赖第三方软件。

答案1

我尝试使用cmd.exestartrunas无济于事。
我尝试使用services.msc,但taskschd.msc无济于事。

唯一有效的是这个 PowerShell 脚本。将这些行放入文件中.ps1C:\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
}

答案2

您可以尝试使用该start命令以分离方式运行 runas 命令。

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

(在这里你可以找到有关启动命令的更多信息http://www.robvanderwoude.com/ntstart.php

相关内容