使用C#/ Windows7连接并登录到远程桌面
问题描述:
我想编写一个应用程序,允许用户在公司网络中输入他们的机器登录凭证,然后将它们连接到该机器。显然,远程桌面连接的登录凭据不再保存在Windows7(和Vista?)的* .RDP文件中,因此this approach不起作用。我知道我可以使用rundll32 keymgr.dll,KRShowKeyMgr
查看保存的凭据,但不知道如何以编程方式向此存储添加凭据。任何指针或甚至代码示例(最好在C#中,但任何事情都会发生)将不胜感激。使用C#/ Windows7连接并登录到远程桌面
答
您仍然可以将密码放在.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
您仍然可以将密码放在.rdp文件中,它仍然会遵守它们 - 除非有明确忽略它的组策略设置。 – vcsjones
你是完全正确的。您是否将您的评论重新发布为我可以接受的答案? – Matthias
答案补充一点。 – vcsjones