Подключение и вход на удаленный рабочий стол с использованием C # / Windows7 - PullRequest
0 голосов
/ 20 сентября 2011

Я хотел бы написать приложение, которое позволяет пользователям вводить свои учетные данные для входа в систему для машины в сети нашей компании, а затем подключать их к этой машине.По-видимому, учетные данные входа для подключений к удаленному рабочему столу больше не сохраняются в файлах * .RDP в Windows7 (и Vista?), Поэтому этот подход не работает.Я знаю, что могу просмотреть сохраненные учетные данные, используя rundll32 keymgr.dll,KRShowKeyMgr, но не знаю, как программно добавить учетные данные в это хранилище.Будем весьма благодарны за любые указатели или даже примеры кода (желательно на C #, но что угодно).

1 Ответ

2 голосов
/ 20 сентября 2011

Вы все еще можете поместить пароль в файл .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();
}

И все.

...