Удалите любую запись из части веб-учетных данных программного менеджера, используя C#
Я разрабатываю настольное wpf-приложение, которое позволит любому пользователю использовать только 3 приложения метро, например, FB, Skype, Viber. Как только пользователь завершит свою сессию через мое приложение, мне придется удалить учетные данные, используемые пользователем для входа в эти приложения. Я обнаружил, что эти приложения метро хранят информацию, относящуюся к учетным данным, в разделе "Веб-учетные данные" Диспетчера учетных данных. Я хочу удалить эти записи программно, используя C#, чтобы, когда любой другой пользователь открыл приложение metro через мое приложение, он увидел экран входа в систему.
4 ответа
Я хотел бы рассказать метод, который я использовал для очистки веб-учетных данных.
- Остановите службу Credential Manager из приложения, работающего с правами администратора.
- Удалите все файлы с расширениями.vcrd и.vsch в локальных пользователях Local\Microsoft\Vault.
- Запустите сервис Credential Manager.
Примечание. Для пункта 2 приложение должно работать с определенными правами пользователя, поскольку у каждого пользователя есть свой профиль.
Вы можете использовать скрипт PowerShell для управления диспетчером учетных данных.
Просмотрите этот скрипт, опубликованный в скриптах MSDN Gallery:
https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Credentials-d44c3cde
Затем следуйте этому примеру, чтобы выполнить команду powershell из C#:
http://blogs.msdn.com/b/kebab/archive/2014/04/28/executing-powershell-scripts-from-c.aspx
Посмотрите на это Как хранить учетные данные пользователя (XAML). Это поможет вам справиться с учетными данными в приложениях Windows Store.
Попробуйте этот код:
NetworkCredential networkCredential = new NetworkCredential("username", "password");
WebRequest webRequest = HttpWebRequest.Create("http://www.contoso.com/");
webRequest.Credentials = networkCredential;
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri("http://www.contoso.com/"), "Basic", networkCredential);
webRequest.Credentials = credentialCache;
credentialCache.Remove(webRequest.RequestUri, "Basic");