Если это имеет значение, я делаю это на Windows Server.
Я пробовал всякое, но параметр -p отказывается принимать что-либо, кроме текстовый пароль. Причина, по которой я не могу этого сделать, заключается в том, что командная строка процесса может быть видна другим учетным записям на том же сервере, и наличие там пароля в виде простого текста - это последнее, что я хочу, чтобы они видели.
Что я уже пробовал:
Код: Выделить всё
var psi = new ProcessStartInfo("7z.exe", "a ... -p%MYSECRET%")
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
EnvironmentVariables =
{
{ "MYSECRET", password }
}
};
var process = Process.Start(psi);
process.WaitForExit();
Следующая попытка заключалась в том, чтобы разрешить 7z.exe запросит у меня пароль и заполнит его, используя перенаправление стандартного ввода:
Код: Выделить всё
var psi = new ProcessStartInfo("7z.exe", "a ... -p")
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardInput = true
};
var process = Process.Start(psi);
process.StandardInput.Write(password);
process.StandardInput.Close();
process.WaitForExit();
Мой вопрос: закрылся ли я каким-либо из методов или я полностью пропустил ?
Моя следующая идея — попытаться создать простой BATCH-файл и выполнить его через cmd.exe, чтобы посмотреть, разрешится ли таким образом переменная среды. Но я уже почти уверен, что это помешает моей первоначальной цели — избежать использования обычного текстового пароля в командной строке порожденного процесса 7z.exe, поскольку cmd.exe заменит переменную на его значение перед запуском окончательного процесса.
Что еще можно попробовать?
Подробнее здесь: https://stackoverflow.com/questions/792 ... n-a-secure
Мобильная версия