Как удалить учетные данные Windows - PullRequest
0 голосов
/ 09 мая 2018

С помощью следующей команды будут показаны все сохраненные учетные данные Windows.

rundll32.exe keymgr.dll,KRShowKeyMgr

Я ищу способ удалить одну учетную запись, например, учетные данные для специального сервера.

Приложение C # Windows должно удалить учетные данные. Я искал пространства имен System.Web.Security и System.ServiceModel.Security , но это, похоже, не подходит.

Полагаю, должен быть управляемый API-интерфейс Windows, который может справиться с этой задачей.

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Эта часть библиотек Windows в настоящее время не широко открыта для всего мира. Причина проста: мы работаем с учетными данными , как только мы загрузим их в среду .NET, они сразу же станут обрабатываться управляемым кодом и станут легко доступны (украсть).

Исходя из этого, Microsoft подготовила программу cmdkey (как упомянул ееme86 в комментариях).

cmdkey.exe - это Утилита командной строки диспетчера учетных данных .

Этот файл является частью операционной системы Microsoft® Windows®. Cmdkey.exe разработан Microsoft Corporation. Это системный и скрытый файл. Файл Cmdkey.exe обычно находится в подпапке% SYSTEM%, и его обычный размер составляет 13 824 байта.


Если вы хотите использовать его в C #, необходимо создать собственный API (или использовать существующий, если есть). Для получения списка целей вы можете сделать следующее:

const string cSplitString = "target="; // word "target" might differ in other languages

var targets = new List<string>();
var proc = new Process // We need separate process to get the output
{
    StartInfo = new ProcessStartInfo
    {
        FileName = "cmdkey.exe",
        Arguments = "/list",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true
    }
};
proc.Start();

// reading output from the process
while (!proc.StandardOutput.EndOfStream) {
    string line = proc.StandardOutput.ReadLine();
    if (line.Contains(cSplitString))
        targets.Add(line.Substring(line.IndexOf(cSplitString)+cSplitString.Length));
}

и для удаления:

string deleteTarget = "test";
Process.Start("cmdkey.exe", "/delete:" + targets.First(a => a.Contains(deleteTarget)));
0 голосов
/ 01 июня 2018

Я использовал это, и это действительно работает.

Install-Package CredentialManagement -Version 1.0.2
    or
    dotnet add package CredentialManagement --version 1.0.2

Будет полезно. Вы можете скачать его с по этой ссылке .

0 голосов
/ 25 мая 2018

Попробуйте этот пакет NuGet: https://www.nuget.org/packages/CredentialManagement/. Он может получать, устанавливать и удалять учетные данные Windows.

На самом деле официального C # API не существует. Этот пакет NuGet просто упаковывает необходимые вызовы DLL-файлов.

...