Криптофрагмент белый список Spotify - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь выполнить этот код:

$username = "$env:username"
"C:\Program Files (x86)\Foolish IT\CryptoPrevent\cryptoprevent.exe" /apply /appdata /silent /a=C:\Users\$username\AppData\Roaming\Spotify\spotify.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spwebinst0.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spotifylauncher.exe

Однако командная строка Cryptoprevent не может распознать переменную.Запуск вышеуказанных команд белых списков.c: \ users \ $ username \ appdata ....

Мне нужно получить текущего пользователя, вошедшего в систему, а затем создать код с фактическим именем пользователя, уже имеющимся в команде, и затем выполнить его.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Для выполнения внешней программы (или любой другой команды), чье имя или путь:

  • , заключенные в одинарные или двойные кавычки

  • или хранится в переменной

Вы должны использовать &, оператор вызова чтобы вызвать это.

Поэтому:

$username = $env:username
& "C:\Program Files (x86)\Foolish IT\CryptoPrevent\cryptoprevent.exe" /apply /appdata /silent /a=C:\Users\$username\AppData\Roaming\Spotify\spotify.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spwebinst0.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spotifylauncher.exe

Несколько сторон:

  • Нет смысла заключать $env:username в "...";кроме того, вы можете просто указать $env:username непосредственно в вашей команде.

  • Если пойти дальше, как указывает Джеймс С. , вы могли бызамените C:\Users\$username\AppData\Roaming на $env:APPDATA.

0 голосов
/ 07 июня 2018

Powershell не расширяет переменную, поскольку не обрабатывает эту часть вашей команды как строку.

Вы можете использовать Start-Process с ArgumentList, чтобы это произошло:

Start-Process "C:\Program Files (x86)\Foolish IT\CryptoPrevent\cryptoprevent.exe" -ArgumentList "/apply","/appdata","/silent","/a=C:\Users\$username\AppData\Roaming\Spotify\spotify.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spwebinst0.exe,/a=C:\Users\$username\AppData\Roaming\Spotify\spotifylauncher.exe"

Я бы использовал $env:appdata напрямую, так как это папка C:\Users\USER\AppData\Roaming.

$CryptoPreventPath = "C:\Program Files (x86)\Foolish IT\CryptoPrevent\cryptoprevent.exe"

$args = @(
    "/apply",
    "/appdata",
    "/silent",
    "/a=$env:appdata\Spotify\spotify.exe,/a=$env:appdata\Spotify\spwebinst0.exe,/a=$env:appdata\Spotify\spotifylauncher.exe"
)

Start-Process $CryptoPreventPath -ArgumentList $args
...