c# - 有没有办法在指导其标准输出时通过其关联运行文件?
问题描述
我可以:
using (var process = new Process()) {
process.StartInfo.FileName = executable;
process.StartInfo.Arguments = arguments;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
//process.StartInfo.Verb = "Open";
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
...
}
但是接下来我要查找它的关联(AssocQueryString
),解析关联字符串,这可能相当复杂,比如:
"%systemroot%\system32\mspaint.exe" /pt "%1" "%2" "%3" "%4"
或者:
C:\Python27\python.exe "%1" %*
然后拆分为可执行部分,使用 扩展它Environment.ExpandEnvironmentVariables(exeFile)
,然后用解析的 argmunets 替换所有百分比,依此类推。
在少数情况下,关联字符串可能非常奇怪,例如(注意所有的斜线 - 谁知道它是否有效......):
\"C:\Program Files\Microsoft\R Client\R_SERVER\\\bin\\x64\\RGui.exe\" \"%1\"
我可以使用过时的WinExec
or ShellExecute
,但是我无法重定向 stdout/stderr。
调用CreateProcess
基本上像 C# 一样工作new Process()
:MSDN 指出
...请注意,此函数不会搜索 App Paths 注册表项指定的每个应用程序路径。
所以我注定要一个人完成所有的工作吗?没有更简单的解决方案?
解决方案
推荐阅读
- python - 如果我删除我的 css,在我的关于 django 模板的页面中面对这个问题,那么它工作得很好,否则每当我用来显示图像时它都会给我一个错误
- if-statement - Pine 脚本交易,无法使用 If else 语句
- python-3.x - 将整数列表转换为逗号分隔的整数
- python - 获取与目标变量相关的特征列表
- python - 如何使用 pyOpenCL 在 GPU 内存上分配内存?
- java - Java中有没有办法直接在charArray中输入?
- c# - ASP.NET CORE DI - 从 EF Core 的 Database.GetDbConnection() 中解析 IDbConnection
- wildfly - 使用启动脚本通过 CLI 将 Zipkin 跟踪添加到 WildFly
- php - 从 MySQL 表中删除一行
- hyperledger-fabric - 链码 bor 已在通道 mychannel 上成功定义并重试:'bor' 的链码定义存在,但未安装链码