我试图从C#执行vbscript,尽管我没有运行此脚本的权限,但vbscript始终能够成功运行。

代码:

        //nswp is the User's password
        foreach (char c in uspw)
        {
            password.AppendChar(c);
        }
        Process scriptProc = new Process();
        scriptProc.StartInfo.RedirectStandardOutput = true;
        scriptProc.StartInfo.RedirectStandardError = true;
        scriptProc.StartInfo.Domain = "moia.gov.il";
        scriptProc.StartInfo.ErrorDialog = true;
        scriptProc.StartInfo.UserName = Globals.CURRENT_USER.user_name;
        scriptProc.StartInfo.Password = password;
        scriptProc.StartInfo.UseShellExecute = false;
        scriptProc.StartInfo.FileName = @"cscript";
        scriptProc.StartInfo.Arguments = "//B //Nologo " + pathSave;
        scriptProc.Start();
        scriptProc.WaitForExit();
        scriptProc.Close();


当我手动执行此vbscript时(通过双击文件图标),我将得到权限错误,这是我应该的。

我如何才能在c#中捕获此错误并分别引发异常。

最佳答案

当您像在这里一样使用其他过程时,您没有太多选择。这是关于它的:

    scriptProc.WaitForExit();
    if (scriptProc.ExitCode != 0) throw new Exception("Script failed");


您可以通过使用COM脚本宿主在进程中执行脚本来获取丰富的错误信息。很难说,这太过分了。

08-18 21:42