向ProcessStartInfo

时间:2016-07-01 08:52:36

标签: c# .net vb.net

我创建了一个以管理员身份执行.exe文件的方法 我想对两个不同的.exe文件使用相同的方法,但.exe文件看起来彼此不同。因此,他们需要不同数量的参数 方法如下:

public static int RunProcessAsAdmin(string exeName, string parameters)
{
    try {
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.UseShellExecute = true;
        startInfo.WorkingDirectory = CurrentDirectory;
        startInfo.FileName = Path.Combine(CurrentDirectory, exeName);
        startInfo.Verb = "runas";

        if (parameters.Contains("myValue")) {
            startInfo.Arguments = parameters + "otherParam1" + "otherParam2";
        } else {
            startInfo.Arguments = parameters;
        }
        startInfo.WindowStyle = ProcessWindowStyle.Normal;
        startInfo.ErrorDialog = true;

        Process process = process.Start(startInfo);
        process.WaitForExit();
        return process.ExitCode;
    } 

    } catch (Exception ex) {
        WriteLog(ex);
        return ErrorReturnInteger;
    }
}

这里if (parameters.Contains("myValue"))我以某种方式检测到哪个.exe文件正在执行。但是,添加这样的参数无法正常工作:startInfo.Arguments = parameters + "otherParam1" + "otherParam2";

是否可以添加其他参数?

2 个答案:

答案 0 :(得分:4)

ProcessStartInfo.Arguments只是一个字符串,所以在每个参数之间加上一个空格:

startInfo.Arguments = "argument1 argument2";

<强>更新

所以改变:

startInfo.Arguments = parameters + "otherParam1" + "otherParam2";

到此(仅当您将"otherParam1""otherParam2"更改为变量时)

startInfo.Arguments = parameters + " " + "otherParam1" + " " + "otherParam2";

如果您不打算将"otherParam1""otherParam2"更改为变量,请使用:

startInfo.Arguments = parameters + " " + "otherParam1 otherParam2";

答案 1 :(得分:0)

参数是一个字符串,因此您可以使用string.Format

startInfo.Arguments = string.Format("{0} {1} {2}", parameters, otherParam1, otherParam2);