2015-01-29 5 views
-1

Мне нужно автоматически удалить сохраненные учетные данные сетевых ресурсов из кэша Windows. Я искал его, но не смог найти решение. Но я решил эту проблему, выполнив следующий оператор в командной строке.Как выполнить инструкцию cmd для очистки сохраненных учетных данных сети из кэша Windows с помощью C#?

net use \\someloaction /del 

Теперь мне нужно выполнить инструкцию cmd с помощью asp.net C#.

Я пробовал следующий код. Но это не работает.

var startInfo = new ProcessStartInfo 
     { 
      FileName = "cmd.exe", 
      RedirectStandardInput = true, 
      RedirectStandardOutput = true, 
      UseShellExecute = false, 
      CreateNoWindow = true 
     }; 

     var process = new Process { StartInfo = startInfo }; 

     process.Start(); 
     process.StandardInput.WriteLine("net use \somelocation /del"); 
     process.StandardInput.WriteLine("exit"); 

     process.WaitForExit(); 

ответ

0

Вы должны использовать Arguments свойство класса ProcessStartInfo. Флаг/C служит для передачи аргументов в процессор командной оболочки для выполнения, иначе он немедленно закроется.

var startInfo = new ProcessStartInfo 
{ 
    FileName = "cmd.exe", 
    Arguments = @"/C net use \\somelocation /del", 
    UseShellExecute = false, 
    CreateNoWindow = true 
}; 

Однако команда NET USE ..../D не удаляет ПОКРЫТИЕ, хранящиеся для вашего пользователя, для доступа к сетевому ресурсу. Если вам нужно удалить учетные данные, заставляя пользователя повторно вставлять их в следующий раз, когда он/она хочет использовать общий ресурс, вам необходимо работать с Диспетчером учетных данных.

Проблема в том, что эта библиотека не имеет официальной управляемой реализации (AFAIK). Таким образом, вы должны использовать библиотеку плагинов, которые вы можете download from here или использовать ползунки NuGet установить с помощью команды Install-Package CredentialManagement

Таким образом, после удаления обмена с предыдущей командой NET USE, вы могли бы написать в своем коде что-то вроде этого

Credential cm = new Credential(@"\\server\share","", @"server"); 
cm.Delete(); 

Вы могли бы найти другой вопрос об этом at this link
(Попробовал эту библиотеку, и я в состоянии очистить учетные данные для доступа к общей сети на моей локальной сети с помощью командной строки. Я надеюсь, что то же самое происходит на вашей стороне)

+0

, поэтому после p rocess.Start(); заявление, что я должен делать? – Nachikethas

+0

Я начал процесс и закончил его. Но все равно его не очистили. Я также попытался предоставить WorkDirectory = "C: \\ Documents and Settings \\ myloginname". Но бесполезно. – Nachikethas

+0

Повторное чтение вашего вопроса неясно, что вы хотите удалить. Команда «Net use» подключает или отключает компьютер от общего ресурса. Это не имеет ничего общего с удалением CREDENTIALS – Steve

 Смежные вопросы

  • Нет связанных вопросов^_^