Я пытаюсь подключиться к сетевому диску с помощью C#, который защищен паролем. Я попытался реализовать это в классе, который работает в принципе, потому что я протестировал его с пользователем, у которого есть пароль без специальных символов.
Соединение устанавливается через следующий исходный код:
Process pro = new Process();
// StorageLetter = A: for example
pro.StartInfo.Arguments = "use " + StorageLetter + @" \\" + IP + @"\c$\ /user:" + User + " " + Password + " /persistent:" + Persistent;
pro.StartInfo.FileName = "net";
pro.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
pro.StartInfo.CreateNoWindow = true;
pro.Start();
pro.WaitForExit();
Однако правильный пользователь имеет пароль со специальными символами (например: | s / 1 =; zw} ), и поэтому установление соединения не будет работать.
Здесь Я уже выяснил, что есть специальный синтаксис через командную строку. Я также пытался реализовать это:
private Dictionary<string, string> escapeSequenzToCharacters = new Dictionary<string, string>();
public PasswordModifier()
{
escapeSequenzToCharacters.Add("^", "^"); // = ^
escapeSequenzToCharacters.Add("\\", "\\\\"); // = \
escapeSequenzToCharacters.Add("\"", "\""); // = "
escapeSequenzToCharacters.Add("%", "%"); // = %
escapeSequenzToCharacters.Add("&", "^"); // = &
escapeSequenzToCharacters.Add("<", "^"); // = <
escapeSequenzToCharacters.Add(">", "^"); // = >
escapeSequenzToCharacters.Add("|", "^"); // = |
escapeSequenzToCharacters.Add("'", "^"); // = '
escapeSequenzToCharacters.Add("`", "^"); // = `
escapeSequenzToCharacters.Add(",", "^"); // = ,
escapeSequenzToCharacters.Add(";", "^"); // = ;
escapeSequenzToCharacters.Add("=", "^"); // = =
escapeSequenzToCharacters.Add("(", "^"); // = (
escapeSequenzToCharacters.Add(")", "^"); // = )
escapeSequenzToCharacters.Add("!", "^^"); // = !
escapeSequenzToCharacters.Add("[", "\\"); // = [
escapeSequenzToCharacters.Add("]", "\\"); // = ]
escapeSequenzToCharacters.Add(".", "\\."); // = .
escapeSequenzToCharacters.Add("*", "\\"); // = *
escapeSequenzToCharacters.Add("?", "\\"); // = ?
}
public string ModifyForBash(string password)
{
foreach (string key in escapeSequenzToCharacters.Keys)
{
if (password.Contains(key))
password = password.Replace(key, escapeSequenzToCharacters[key] + key);
}
return password;
}
Он также возвращает правильно отредактированный пароль для моего понимания ( | s / 1 =; zw} = ^ | s / 1 ^ = ^; zw} ), но все равно не работает, когда я пытаюсь подключиться к нему.
Кроме того, теперь я также попробовал эти методы, но безуспешно:
Теперь я спрашиваю, как я могу это сделать в C#, что пароль со спецсимволами можно использовать без проблем?