.net 尝试启动进程时找不到指定的文件

fivyi3re  于 2023-06-07  发布在  .NET
关注(0)|答案(2)|浏览(305)

我正在尝试制作一个C#应用程序,它将连接到文件共享,写入文件,然后断开连接。

NetUseCmd = "net use t: \\Hostname\Vol /user:UserName SomePass"
System.Diagnostics.Process.Start(NetUseCmd);
Directory.CreateDirectory(DriveLetter + ":/" + DirName);
StreamWriter file = new StreamWriter(DriveLetter + ":/" + FileName);
file.Write(logdata);
file.Close();
System.Diagnostics.Process.Start("net use " + DriveLetter + ": /del");

在第二行,我看到了错误:

System.ComponentModel.Win32Exception was unhandled
  Message="The system cannot find the file specified"
  Source="System"
  ErrorCode=-2147467259
  NativeErrorCode=2
  StackTrace:
       at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
       at System.Diagnostics.Process.Start()
       at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
       at System.Diagnostics.Process.Start(String fileName)
       [...]
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:

我知道错误消息意味着它找不到net命令,但我不明白为什么它找不到它。

polkgigr

polkgigr1#

您需要将命令作为第一个参数传递,然后将任何参数作为第二个参数传递给进程。所以:

System.Diagnostics.Process.Start( "net", "use t: \\Hostname\Vol /user:UserName SomePass");

请参阅documentation以了解更多详细信息。

guicsvcw

guicsvcw2#

如果你想给net.exe传递一些参数,你应该使用Process.Start()的另一个重载版本:

string arguments = @"use t: \\Hostname\Vol /user:UserName SomePass";
System.Diagnostics.Process.Start("net", arguments);

请检查源代码中的双反斜杠(没有@,这是一个转义序列)。

相关问题