【问题标题】:C# Net use shows 2 different thingsC# Net use 显示了 2 个不同的东西
【发布时间】:2015-05-26 15:49:24
【问题描述】:

核心问题是,当以编程方式运行命令提示符以从 net use 中删除连接时,显示的结果与在相同上下文中不同的结果,即用户打开命令提示符并运行 net use。

这是删除连接的代码:

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/K net use delete \\IPAddrofserver";
process.StartInfo = startInfo;
process.Start();

所以发生的情况是连接以编程方式成功删除,但是如果我打开 cmd 提示符并运行 net use,我会看到我刚刚删除的连接。此连接保持打开状态会导致我的程序出错。 Whoami 显示正在使用同一用户。那么为什么会有区别呢?

【问题讨论】:

    标签: c# windows command prompt


    【解决方案1】:

    我认为当您(使用 Active Directory 的用户)使用 CMD 和您的应用程序实例(svchost?或任务调度程序?)时,它是一个不同的实例,除非您在 ProcessStartInfo 上指定自己的凭据(域、用户名和密码) ,那么我认为您可以以用户身份与您的 CMD 实例很好地同步。

    【讨论】:

    • 但是如果连接以编程方式打开并以编程方式关闭,为什么用户也会打开连接?我认为您是对的,但我对事件的流程感到好奇。基本上它是程序打开连接->操作->程序关闭连接。用户在哪里输入图片?
    • 哈哈,我不能准确地支持这一点。我认为这也是可能导致这些情况的过多安全/基于会话的网络服务等的副作用。您的用户是完全管理员吗?也许这就是为什么逻辑上一个应用程序可以在您的工作站中打开任何路径,而在删除时,它只影响 ITS 实例,而不影响您作为管理员。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多