在用户操作的网页上执行远程PC上的批处理文件

时间:2017-02-05 07:59:18

标签: c# batch-file process powershell-remoting

我有一个用MVC C#编写的网页。我想在此页面中的用户操作上运行一些批处理文件(在远程PC上)。我有以下功能在远程PC上运行批处理文件:

public bool runBatch(string address, string batchFile, string pwd, string username) {
    try {
        string AppPath = address;

        string strFilePath = AppPath + batchFile;
        Process proc = new Process();
        proc.StartInfo.FileName = strFilePath;
        proc.StartInfo.UserName = username;
        proc.StartInfo.Domain = "localdomain";
        System.Security.SecureString secret = new System.Security.SecureString();
        foreach (char c in pwd)
            secret.AppendChar(c);

        proc.StartInfo.Password = secret;
        proc.StartInfo.UseShellExecute = false;

        proc.Start();

        while (!proc.HasExited) {
            proc.Refresh();
            Thread.Sleep(1000);
        }

        proc.Close();

        return true;
    } catch (Exception ex) {
        return false;
        throw ex;
    }
}

我将这个函数称为:

var run = runBatch("X.X.X.X:\\\\C:Users\\Admin\\Desktop\\", "ping.bat", "****", "Admin");

我的电脑在同一个IP域,我多次检查用户名和密码,但是我收到了错误

  

用户名和密码不正确

我真的很困惑。任何人帮助我吗?

1 个答案:

答案 0 :(得分:0)

由于一些朋友帮我解决了这个问题,我会回答,也许这可以节省另一个人的时间。我的代码的问题是我以错误的方式提供文件地址。我必须这样称呼它:

var run = runBatch(@"\\x.x.x.x\C$\Users\Admin\Desktop\", "ping.bat", "****", "Admin");

另一件需要记住的事情是,流程可以在我们提供的路径上看到共享文件夹!