相关疑难解决方法(0)

如何在.NET Core中跨平台执行shell命令?

在我的 .NET Core 控制台应用程序中,我收到字符串数组形式的多个命令,并希望将它们作为控制台命令执行(如果可能,但不是硬要求,并在我自己的应用程序中显示它们的输出)。

首先,我尝试解析每个命令以分离它们的名称和参数并将它们放入ProcessStartInfo. 但是,某些命令不起作用(即使是简单的命令,如echo "Hello")。

现在我转而调用 Powershell,如下所示:

    static IEnumerable<ProcessStartInfo> ParseCommands(string[] args)
    {
        return args
            .Skip(1)
            .Select(q => new ProcessStartInfo()
            {
                FileName = "powershell",
                Arguments = q,
                RedirectStandardOutput = true,
                RedirectStandardError = true,
                UseShellExecute = false,
            }).ToList();
    }

    static void RunCommand(ProcessStartInfo processInfo)
    {
        Console.WriteLine($"{processInfo.Arguments}");

        var process = new Process()
        {
            StartInfo = processInfo,
        };
        process.Start();

        while (!process.StandardOutput.EndOfStream)
        {
            Console.WriteLine(process.StandardOutput.ReadLine());
        }

        process.WaitForExit();
    }
Run Code Online (Sandbox Code Playgroud)

问题是我不认为这个可以在 Linux 或 MacOS 上运行。是否有任何“标准”方法来告诉我的应用程序“像控制台命令一样运行它”?


这是我当前的代码通过使用Platform来确定控制台命令,请随时告诉我是否有更好的方法:

    static IEnumerable<ProcessStartInfo> ParseCommands(string[] args)
    {
        var argsPrepend …
Run Code Online (Sandbox Code Playgroud)

c# shell console console-application .net-core

6
推荐指数
0
解决办法
2万
查看次数

使用 NAudio for .NET 如何删除 mp3 文件末尾的静音波?

我正在开发一个 C# WPF 应用程序,它将一组单词(大约 17,000 个单词)组合在一起,并生成一个与 mp3 文件匹配的播放列表(每个 mp3 文件都是一个单词)。

目前,每个 mp3 文件在其波形结束时都有 1 秒到 30 秒之间的随机静音。

我希望能够以编程方式从文件末尾删除静音波。

使用 NAudio for .NET 如何删除 mp3 文件末尾的静音波?

.net c# audio mp3 naudio

5
推荐指数
1
解决办法
4983
查看次数

如何创建一个watcherprocess来检测可移动的USB设备?

我构建了一个小脚本,用于检查具有给定名称的USB Stick是否已插入计算机,但现在我想围绕此脚本构建一个服务,以观察Stick是否插入.起初我尝试用filewatcher执行此操作并在Stick上创建一个文件,但是如果从PC上取下棒并重新插入filewatcher dosent意识到它.以下脚本检查Stick是否插入,但我需要一个脚本来循环此DriveInfo.GetDrive函数.我不知道最好的方法是在这个函数周围建立一个10秒的定时器循环,或者.NET Framework中是否有可移动设备的观察者类.脚本来了:

public static void Main()
{
    Run();
}

public static void Run()
{                     
    var drives = DriveInfo.GetDrives()
        .Where(drive => drive.IsReady && drive.DriveType == DriveType.Removable);
    if (drives.Count() > 0)
    {
        foreach (var drive in drives)
        {
           if (drive.VolumeLabel == "TESTLABEL") Console.WriteLine("USB Stick is plugged in");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# winapi

4
推荐指数
1
解决办法
5452
查看次数

从ASP.NET页启动/停止窗口服务

有没有一种方法可以启动/停止其他网络中服务器的Windows服务

(不是\\<server name>)来自asp.net页面?

我尝试使用ServiceController,但只有在同一网络中才可以使用。

asp.net security impersonation windows-services

3
推荐指数
1
解决办法
4078
查看次数

如何执行命令并获取其输出

这几天我学习了一些关于 ASP 的知识。我想将此 PHP 代码行转换为 ASP,但我有点坚持:

$online = exec('netstat -a -n |find "5816" |find "ESTABLISHED" /c') +1;
Run Code Online (Sandbox Code Playgroud)

我尝试创建一个变量来存储数据,但无法弄清楚如何检查端口 5816 并计算连接数。感谢帮助!

它基本上应该是在 cmd 中运行的命令来检查端口和否。由它建立的连接!

php c# asp.net asp.net-mvc visual-studio

2
推荐指数
1
解决办法
2万
查看次数

如何在 C# 中从窗口的 IP 路由表中永久删除辅助网络接口的默认路由规则

我有一台多宿主 Windows 机器(Windows Server 2016),我想确保出站流量永远不会通过辅助网络接口(通过 C# 编程)。

我的路由表中有 2 个网络接口的默认条目:

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      172.31.32.1    172.31.44.180     15
          0.0.0.0          0.0.0.0      172.31.96.1    172.31.96.230     15
Run Code Online (Sandbox Code Playgroud)

我认为永久删除辅助网络接口的条目对于我的用例就足够了。我只希望此条目之后存在:

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      172.31.32.1    172.31.44.180     15
Run Code Online (Sandbox Code Playgroud)

我找到了 C# APIDeleteIpForwardEntry来删除路由,但我不知道如何使此删除永久化,以便重新启动机器不会撤消我的更改。

任何帮助将不胜感激。

c# windows routing

2
推荐指数
1
解决办法
3万
查看次数