我想编写一个应用程序,允许用户为我们公司网络中的一台机器输入他们的登录凭据,然后将他们连接到那台机器。显然,在 Windows7(和 Vista?)中,远程桌面连接的登录凭据不再保存在 *.RDP 文件中,因此这种方法不起作用。我知道我可以使用 查看保存的凭据rundll32 keymgr.dll,KRShowKeyMgr,但不知道如何以编程方式将凭据添加到此存储。任何指针甚至代码示例(最好在 C# 中,但任何事情都会发生)将不胜感激。
2110 次
1 回答
3
您仍然可以将密码放在 .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();
}
就是这样。
于 2011-09-20T17:26:02.397 回答