Я хотел бы написать приложение, которое позволяет пользователям вводить свои учетные данные для входа в систему для машины в сети нашей компании, а затем подключать их к этой машине. По-видимому, учетные данные для подключения к удаленному рабочему столу больше не сохраняются в файлах * .RDP в Windows7 (и Vista?), Поэтому этот подход не работает. Я знаю, что могу просматривать сохраненные учетные данные с помощью rundll32 keymgr.dll,KRShowKeyMgr
, но не могу программно добавить учетные данные в это хранилище. Мы будем очень благодарны за любые указатели или даже примеры кода (желательно на C #, но все идет).
Подключение и вход на удаленный рабочий стол с помощью C # / Windows7
comment
Вы по-прежнему можете поместить пароль в файл .rdp, он по-прежнему будет учитывать их - если нет параметра групповой политики, который явно игнорирует его.
- person vcsjones   schedule 20.09.2011
comment
Вы совершенно правы. Не могли бы вы повторно опубликовать свой комментарий в качестве ответа, чтобы я мог принять его?
- person Matthias   schedule 20.09.2011
comment
В ответ добавлено немного больше.
- person vcsjones   schedule 21.09.2011
Ответы (1)
Вы по-прежнему можете поместить пароль в файл .rdp, он по-прежнему будет учитывать их - если нет параметра групповой политики, который явно игнорирует его.
ИЗМЕНИТЬ:
Как бы то ни было, эта статья немного преувеличивает. Есть управляемая оболочка вокруг всего этого беспорядочного бизнеса P / Invoke. Есть более простые способы сделать это, если вы используете .NET 2.0, используя _ 1_ класс. (Начните с добавления ссылки на сборку 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();
}
И это все.
person
vcsjones
schedule
20.09.2011