簡體   English   中英

使用包含 C# 中的特殊字符的密碼連接到網絡驅動器

[英]Connection to a network drive with a password containing special characters in C#

我正在嘗試使用受密碼保護的 C# 連接到網絡驅動器。 我試圖在 class 中實現這一點,這在原則上是有效的,因為我用一個沒有特殊字符的密碼的用戶測試了它。

通過以下源代碼建立連接:

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# 中做到這一點,可以使用帶有特殊字符的密碼沒有問題?

經過一些研究和測試,我找到了一個可行的解決方案。 在這篇文章的幫助下,我的應用程序現在可以正常工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM