首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么StartInfo.stuff在调用process.start时不起作用,而Process.start在C#中起作用

在C#中,Process类用于启动外部进程并与其进行交互。在使用Process类的Start方法启动进程时,可以通过ProcessStartInfo类的属性来设置进程的启动参数和属性。其中,StartInfo是Process类的一个属性,用于获取或设置启动进程时使用的进程启动信息。

根据提供的问题,StartInfo.stuff在调用Process.Start方法时不起作用的可能原因有以下几点:

  1. StartInfo属性未正确设置:在调用Process.Start方法之前,需要先设置StartInfo属性的相关属性,如FileName(要启动的可执行文件的路径)、Arguments(要传递给可执行文件的命令行参数)等。如果未正确设置这些属性,可能导致StartInfo.stuff不起作用。
  2. StartInfo.UseShellExecute属性设置错误:UseShellExecute属性用于指定是否使用操作系统的 shell 启动进程。如果将其设置为false,则可以通过重定向标准输入、输出和错误流来与进程进行交互。但是,如果设置为true,则可能会忽略StartInfo.stuff的设置。因此,需要确保UseShellExecute属性的值符合预期。
  3. StartInfo.RedirectStandardOutput或RedirectStandardError属性设置错误:如果需要捕获进程的标准输出或错误输出,可以将RedirectStandardOutput或RedirectStandardError属性设置为true。但是,如果这些属性设置为true,可能会导致StartInfo.stuff不起作用。因此,需要根据实际需求来设置这些属性。
  4. StartInfo.WindowStyle属性设置错误:WindowStyle属性用于指定启动进程时的窗口样式。如果将其设置为Hidden,则进程将在后台运行,可能导致StartInfo.stuff不起作用。需要根据实际需求来设置WindowStyle属性。

综上所述,要确保StartInfo.stuff在调用Process.Start方法时起作用,需要正确设置StartInfo属性的相关属性,如FileName、Arguments等,并根据实际需求设置UseShellExecute、RedirectStandardOutput、RedirectStandardError和WindowStyle等属性。如果仍然存在问题,可能需要进一步检查代码逻辑或调试程序。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 strace Docker 不起作用

在编辑“容器如何工作”爱好者杂志的能力页面,我想试着解释一下为什么 strace Docker 容器无法工作。...为什么?! 假设 2:关于用户命名空间的事情? 我的下一个(没有那么充分的依据的)假设是“嗯,也许这个过程是不同的用户命名空间里, strace 不能工作,因为某种原因而行不通?”...这个问题其实并不相关,但这是我观察想到的。 容器进程是否不同的用户命名空间中?嗯,容器: root@e27f594da870:/# ls /proc/$$/ns/user -l ...... ptrace 在被 Docker 默认的 seccomp 配置文件阻止的系统调用列表!(实际上,允许的系统调用列表是一个白名单,所以只是ptrace 不在默认的白名单。...这很容易解释为什么 strace Docker 容器不能工作 —— 如果 ptrace 系统调用完全被屏蔽了,那么你当然不能调用它,strace 就会失败。

6.4K30

C#进程调用FFmpeg操作音视频

本文将详细介绍如何在C#通过进程调用FFmpeg来操作音视频文件。引言FFmpeg是一个完整的、跨平台的解决方案,用于处理视频和音频数据。...C#是一种面向对象的编程语言,它提供了丰富的库来处理文件、网络、数据库等任务。然而,C#标准库并没有直接支持音视频处理的功能。...因此,对于需要进行音视频处理的C#应用程序,调用FFmpeg是一个实用的解决方案。FFmpeg的安装和配置开始之前,你需要确保FFmpeg已经安装在你的系统上,并且可以命令行访问。...C#调用进程的基础知识C#,可以使用System.Diagnostics命名空间中的Process类来启动和控制进程。...调用Process.Start()方法启动进程。调用Process.WaitForExit()方法等待进程结束。检查进程的退出代码和输出。

89000
  • C#.NET 启动进程所使用的 UseShellExecute 设置为 true 和 false 分别代表什么意思?

    .NET 创建进程,可以传入 ProcessStartInfo 类的一个新实例。在此类型,有一个 UseShellExecute 属性。...---- 本质差异 Process.Start 本质上是启动一个新的子进程,不过这个属性的不同,使得启动进程的时候会调用不同的 Windows 的函数。...也就是说,你可以 Process.Start 的时候传入这些: 一个可执行程序(exe) 一个网址 一个 html / mp4 / jpg / docx / enbx 等各种文件 PATH 环境变量的各种程序...但是: 支持重定向输入和输出 如何选择 UseShellExecute .NET Framework 的的默认值是 true, .NET Core 的默认值是 false。...---- 参考资料 c# - When do we need to set UseShellExecute to True?

    1.2K20

    Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)

    Windows 系统,管理员权限和非管理员权限运行的程序之间不能使用 Windows 提供的通信机制进行通信。...因为绝大多数用户启动系统的时候,explorer.exe 进程都是处于运行状态,如果启动一个新的 explorer.exe,都会自动激活当前正在运行的进程不会启动新的。...(当然关闭 UAC 的电脑上是无效的。)...方法三:启动进程传入用户名和密码 ProcessStartInfo 中有 UserName 和 Password 属性,设置此属性可以以此计算机上的另一个用户身份启动此进程。...方法四:使用 Shell 进程的 Access Token 来启动进程 此方法需要较多的 Windows API 调用,我没有尝试过这种方法,但是你可以自行尝试下面的链接: c# - How do you

    1.7K40

    将 Windows Terminal 作为外部工具集成到其他工具程序代码

    Windows Terminal Windows 上是一款 UWP 应用,然而其依然具有良好的与外部工具的集成特性,你可以在其他各种工具配置使用 Windows Terminal 打开。...命令行调用 应用商店可以下载到 Windows Terminal (Preview),下载安装后,你就可以开始使用 wt 命令了,这可以用来启动 Windows Terminal。...工具集成 了解了以上命令行调用后,工具集成就简单多了,只需要设置好启动 wt 命令,以及设置好工作路径即可。...如下图是我 Directory Opus 设置的 Windows Terminal 的一键打开按钮: ?...PowerShell / CMD / Bash 等多种终端到自定义菜单 - walterlv C# 代码调用 使用 C# 代码启动的方法也非常常规,直接 Process.Start 然后设置工作路径即可

    1.3K10

    dotnet 启动进程传入不存在的文件夹作为工作目录行为变更

    (processStartInfo); 运行将会在 Process.Start 方法上抛出 System.ComponentModel.Win32Exception 说 目录名称无效 如果是英文环境下....NET Core 和 .NET Framework 下,启动,设置 UseShellExecute 分别为 true 和 false 的值,行为有所不同。...{ UseShellExecute = true, // 也设置为 false 的值 }; var process = Process.Start...的值,运行结果是:成功,新进程工作路径等于 C:\Windows 路径 .NET Framework 下,设置 UseShellExecute=false 的值,运行结果是:运行 Process.Start...错误 .NET Framework 下,设置 UseShellExecute=true 的值,运行结果是:成功,新进程工作路径等于 C:\Windows 路径 更多请看 c# - Win32Exception

    89010

    C#.NET 使用 git 命令行来操作 git 仓库

    我们可以命令行操作 git,但是作为一名程序员,如果在大量重复的时候还手动敲命令行,那就太笨了。 本文介绍使用 C# 编写一个 .NET 程序来自动化地使用 git 命令行来操作 git 仓库。...---- 最简单的运行 git 命令的代码 .NET ,运行一个命令只需要使用 Process.Start 开启一个子进程就好了。...于是要运行一个 git 命令,我们其实只需要这句足以: 1 Process.Start("git", "status"); 当然,直接能简写成 git 是因为 git.exe 我的环境变量里面,一般开发者安装...允许获得命令的输出 对于上节写的 Process.Start,你一眼就能看出来这是完全没有用的代码。...process.StandardOutput.ReadToEnd(); } } } 测试与结果 以上 CommandRunner 命令的使用非常简单,new 出来之后,得到一个可以用来执行命令的实例,然后每次执行调用

    1.1K70

    Windows 下使用 runas 命令以指定的权限启动一个进程(非管理员、管理员)

    默认情况下,Windows 系统启动一个进程会继承父进程的令牌。如果父进程是管理员权限,那么子进程就是管理员权限;如果父进程是标准用户权限,那么子进程也是标准用户权限。.../env 要使用当前环境,不是用户的环境。 /netonly 只指定的凭据限于远程访问的情况下才使用。.../trustlevel 应该是 /showtrustlevels 枚举 的一个级别。...windir%\system32\dsa.msc" > runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\"" 注意: 只得到提示才输入用户的密码...1 Process.Start("runas.exe", $"/trustlevel:0x20000 Walterlv.Demo.exe"); 关于更多降权运行的方法,可以参考我的另一篇博客: Windows

    6K40

    用Python、NetCore、Shell分别开发一个Ubuntu版的定时提醒(附NetCore跨平台的两种发布方式)

    蒙圈了,以前C#写的不能跨平台啊,于是就有了这篇文章~(有些人喜欢用番茄工作法,这个算是个福利了) 我稍微说下Linux日常使用的体验,可以略过这段:(这段放最后吧,不然认为我是打广告的就不太好了o((.../task.py】,这样终端中直接./task.py就运行了,逆天不推荐这么做) ? Shell: ?...轮到NetCore了: 核心代码:Process.Start("notify-send", "友情提醒 10分钟过去了"); 原理说明:调用了ubuntu的notify-send的弹窗提醒,自己控制循环和定时...("notify-send", "友情提醒 10分钟过去了"); //用shell启动指定程序+命令 //Process.Start(new ProcessStartInfo("notify-send...3.安装VSCode(直接下载安装deb包即可):http://www.cnblogs.com/dunitian/p/6661644.html 4.安装VSCode的C#扩展 ?

    81530

    C#创建Windows Service(Windows 服务)基础教程

    本文介绍了如何用C#创建、安装、启动、监控、卸载简单的Windows Service 的内容步骤和注意事项。...4)脚本调试 如果需要查看脚本运行状况,脚本最后一行加入pause 五、C#对服务进行控制 0)配置目录结构 简历一个新WPF项目,叫WindowsServiceTestUI,添加对System.ServiceProcess...process.StartInfo.UseShellExecute = false; process.StartInfo.FileName = "Install.bat"; process.StartInfo.CreateNoWindow = true; process.Start...(); System.Environment.CurrentDirectory = CurrentDirectory; 2)卸载 卸载也会产生目录问题,所以卸载代码如下: string CurrentDirectory...process.StartInfo.UseShellExecute = false; process.StartInfo.FileName = "Uninstall.bat"; process.StartInfo.CreateNoWindow = true; process.Start

    2K10

    Qt软件开发_解决中文路径无法识别问题

    前言 QT for Windows 下编程,经常因为一些中文路径、带空格的路径导致一些问题出现。 目录无法打开、文件无法打开、程序无法调用等等。下面记录一些出现问题的场景,并提供一些解决办法。...Qt里调用_chdir函数切换当前工作目录,如果目录有空格或者中文会导致路径切换失败。...参数QStringList作为单个字符串提供。 或者,可以将程序设置为使用setProgram()和setArguments()运行,然后调用start()或open()。...还可以调用error()来查找上次发生的错误类型,调用state()来查找当前进程状态。 使用QProcess调用启动指定的应用程序,如果这个应用程序中文路径下。...(1)调用失败的情况 QProcess process; process.start("D:\\linux-share-dir\\我是中文路径\\Program Files\\Release\\ff_video.exe

    2.8K30

    SublimeText 使用 dotnet 编译 C# 项目

    SublimeText 搭建 C# 环境可以找到的博客基本都是使用 csc 进行构建,而我期望 dotnet 下编译整个项目。...通过 dotnet 编译整个项目可以解决编译大项目需要打开一个控制台降低效率 用 dotnet 编译的优点是我可以 Ubuntu 系统使用 SublimeText 编写和编译 C# 项目。...例如我想写一个 C# 程序,我想要在 SublimeText 通过 ctrl+B 进行编译然后运行,原本 Windows 下我可以同步我的配置,在这里就不能使用,原因是 Windows 下通过 csc...编译文件 通过 dotnet 的编译,可以利用跨平台的 dotnet 技术, Ubuntu 下也使用相同的程序和快捷键开发 使用之前,请先安装好 dotnet 程序,安装方法请看 https:/... SublimeText 可以通过 Build System 新建构建程序,其实这里的构建程序就是通过命令行调用现有程序,现有程序传入当前文件的参数,接下来的就是调用的进程拿到当前文件做的,这样就能做到

    1.1K20

    dotnet core MAC 系统下删除应用程序自己后调 Process Start 方法将会抛出 Win32 异常

    MAC 系统下,如果在运行过程,应用程序的文件被删除了,那么此时如果应用程序执行了 Process.Start 方法,将会抛出 Win32Exception 异常 我写了一个工具 dotnetCampus.UpdateAllDotNetTools...更新 dotnetCampus.UpdateAllDotNetTools 将会删除当前运行的 dotnetCampus.UpdateAllDotNetTools 进程的文件, MAC 下是可以删除正在运行的程序的文件...,但是 .NET Core 的 Process.Start 方法里面的逻辑是需要先获取当前进程所在的文件,获取对应的文件夹,用于找到命令 例如我输入了 dotnet 命令,通过 Process.Start...因此第一步就是获取当前进程所在的文件 .NET 开源代码里面,可以 src\libraries\System.Diagnostics.Process\src\System\Diagnostics\...调用一个和 Windows 的 P/Invoke 方法差不多的方法 /// Gets the path to the current executable, or null

    82730
    领券