在ProcessStartInfo中运行`mklink`

Boa*_*rdy 5 c# symlink process

我正在研究需要与Windows和Linux(Mono)兼容的ac#程序.

我试图在两个平台上创建一个符号链接,我正在使用ProcessStartInfo来实现这一点.我还没有在Linux上试过这个,但是在Windows上我使用的是以下代码

ProcessStartInfo process = new ProcessStartInfo();

                    process.CreateNoWindow = true;
                    process.UseShellExecute = false;
                    process.FileName = "mklink";
                    process.WindowStyle = ProcessWindowStyle.Hidden;
                    process.Arguments = "/D " + webFolder + "MyFolder" + webFolder + "MyFolder_" + version;
                    Process.Start(process);
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我得到了

System.ComponentModel.Win32Exception:系统找不到指定的文件

如果我在命令提示符下运行mklink它工作正常.

我已经看了谷歌,它说关于做[DllImport("kernel32.dll")],但这不适用于Linux.

感谢您的任何帮助,您可以提供.

Eri*_* J. 15

mklinkcmd.exe程序的命令,而不是一个独立的程序.

要运行mklink,您必须cmd.exe使用一组适当的参数进行实际调用,如下所示:

ProcessInfo = new ProcessStartInfo("cmd.exe", "/c mklink " + argumentsForMklink);
Run Code Online (Sandbox Code Playgroud)

  • 我通过“PSEXEC \\someserver mklink ...”在远程计算机上运行“mklink”时遇到问题。您的回答给了我使用“PSEXEC \\someserver cmd /c mklink ...”的关键提示,效果很好。 (2认同)