-1

我需要以编程方式从 Windows 缓存中删除已保存的网络共享凭据。我搜索了它,但找不到解决方案。但是我通过在命令提示符下执行以下语句解决了这个问题。

net use \\someloaction /del

现在我需要使用 asp.net c# 执行 cmd 语句。

我尝试了以下代码。但它不起作用。

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();
4

1 回答 1

0

您应该使用 ProcessStartInfo 类的Arguments属性。/C 标志用于将参数传递给 Shell 命令处理器以供执行,否则它将立即关闭。

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

但是,NET USE .... /D 命令不会删除为您的用户存储以访问网络共享的凭据。如果您需要删除凭据,强制用户在下次他/她想要使用您需要使用凭据管理器的共享资源时重新插入它们。

问题是这个库没有官方托管实现(AFAIK)。因此,您需要使用可以从此处下载的插件库或使用 NuGet 安装命令Install-Package CredentialManagement

因此,在使用之前的 NET USE 命令删除共享后,您可以在代码中编写类似这样的内容

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

您可以在此链接上找到有关此问题的另一个问题
(尝试了此库,我能够使用命令提示符清除凭据以访问我的局域网上的共享网络。我希望您也能遇到同样的情况)

于 2015-01-29T11:25:27.787 回答