2011-09-20 155 views
0

我想編寫一個應用程序,允許用戶在公司網絡中輸入他們的機器登錄憑證,然後將它們連接到該機器。顯然,遠程桌面連接的登錄憑據不再保存在Windows7(和Vista?)的* .RDP文件中,因此this approach不起作用。我知道我可以使用rundll32 keymgr.dll,KRShowKeyMgr查看保存的憑據,但不知道如何以編程方式向此存儲添加憑據。任何指針或甚至代碼示例(最好在C#中,但任何事情都會發生)將不勝感激。使用C#/ Windows7連接並登錄到遠程桌面

+2

您仍然可以將密碼放在.rdp文件中,它仍然會遵守它們 - 除非有明確忽略它的組策略設置。 – vcsjones

+1

你是完全正確的。您是否將您的評論重新發布爲我可以接受的答案? – Matthias

+0

答案補充一點。 – vcsjones

回答

2

您仍然可以將密碼放在.rdp文件中,它仍然會遵守它們 - 除非有明確忽略它的組策略設置。

編輯

對於它的價值,這文章是有點過殺人。在所有那些混亂的P/Invoke業務中都有一個託管包裝。如果您使用.NET 2.0使用ProtectedData類,則有更簡單的方法。 (首先添加對System.Security程序集的引用)。

一旦你得到了補充參考,你可以這樣做:

public string Encrypt(string toEncrypt) 
{ 
    var userData = Encoding.Unicode.GetBytes(toEncrypt ?? String.Empty); 
    return "password 51:b:" + ToHexString(ProtectedData.Protect(userData, new byte[0], DataProtectionScope.CurrentUser)); 
} 

private static string ToHexString(byte[] bytes) 
{ 
    if (bytes == null) 
    { 
     return String.Empty; 
    } 
    return bytes.Aggregate(new StringBuilder(), (sb, b) => sb.AppendFormat("{0:x2}", b)).ToString(); 
} 

就是這樣。

+0

謝謝,非常有幫助! – Matthias