如何将一些VBScript代码转换为C#

4

在我的C#代码中,我目前引用了一个运行批处理文件的VBS文件。我这样做是因为它隐藏了CMD窗口(防止在执行过程中被看到)。我遇到了权限问题,电脑无法执行VBS文件。

有没有办法让我在C#中复制VBS代码?

以下是代码:

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c LayoutsBackup.bat"
oShell.Run strArgs, 0, false

1
Process.Start - crashmstr
1个回答

0
您可以在新的控制台项目中尝试以下代码。使用F10逐步执行它,看看它是否有帮助。
using System;
using System.Diagnostics;

namespace ConsoleApplication13
{
    class Program
    {
        static void Main(string[] args)
        {
            //Set oShell = CreateObject("Wscript.Shell")
            var shellType = Type.GetTypeFromProgID("Wscript.Shell");
            dynamic shell = Activator.CreateInstance(shellType);
            //Dim strArgs
            //strArgs = "cmd /c LayoutsBackup.bat"
            //oShell.Run strArgs, 0, false
            var startArgs = new ProcessStartInfo
            {
                Arguments = @"/c ""C:\YourPathTo\LayoutsBackup.bat""",                    FileName = "cmd",
                UseShellExecute = false
            };
            var shellProcess = Process.Start(startArgs);
            shellProcess.WaitForExit(); /* optional */
        }
    }
}

1
你可能需要 cmd 和 bat 文件的完整路径名。 - jdweng
@jdweng 可能是这样!在我的笔记本电脑上没有这个问题。我使用的是Win 7 Ent操作系统。你也可以尝试使用"win.exe"。对我而言,那也可以运行。 - Martin Lottering
@jdweng 你的意思是.bat文件必须在控制台应用程序的bin\Debug目录中吗?我同意。我已经编辑了答案。谢谢。 - Martin Lottering
我尝试了,但它不起作用。它只是打开cmd窗口到从中启动exe的位置。 - B C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接