【发布时间】:2015-05-23 22:56:04
【问题描述】:
所以我在 C# 中遇到了“net use”命令的问题。基本上,我使用的是here 编写的代码。该代码效果很好,但是我有多个需要按顺序使用的 id。不幸的是,当尝试连接到另一个 ID 时,连接在 Windows 中仍然处于“net use”状态,所以抛出了这个异常:
Win32Exception: Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed.
现在对我来说,显而易见的事情是以编程方式执行命令提示符,以在我完成使用连接时删除连接。这是我正在运行以删除连接的代码:
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();
我只使用 /k,所以我可以查看该命令是否有效。执行此代码后,它显示“找不到网络连接”。但是,如果我手动打开开始菜单并键入 net use,我可以看到并删除连接。我认为这可能与以下事实有关:以编程方式运行命令提示符时,我注意到它被赋予了管理权限,而不是在我的用户令牌下运行它,但我不能确定。对此的任何帮助将不胜感激。
编辑:在 WnetCancelConnection2 期间添加命令提示符删除代码实际上可以正常运行,并从网络使用中删除连接。但是,在程序外部手动检查网络使用情况会发现连接历史仍然存在并且处于打开状态。 Whoami 命令显示相同的用户。为什么以编程方式发生的事情与我手动检查时发生的事情之间存在差异?
【问题讨论】: