核心问题是,当以编程方式运行命令提示符以从网络使用中删除连接时,显示的结果与在同一上下文中不同,用户打开命令提示符并运行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表明正在使用同一个用户。那为什么会有区别?
答案 0 :(得分:0)
我认为当您(使用Active Directory的用户)使用CMD和您的应用程序实例(svchost?或任务计划程序?)时,它是一个不同的实例,除非您指定自己的凭据(域,用户名和密码) ProcessStartInfo,然后我认为您可以作为用户与您的CMD实例很好地同步。