问题标签 [process.start]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
360484 浏览

c# - Process.start:如何获得输出?

我想从我的 Mono/.NET 应用程序运行一个外部命令行程序。例如,我想运行mencoder。是否可以:

  1. 获取命令行 shell 输出,并将其写在我的文本框中?
  2. 要获得数值以显示经过时间的进度条?
0 投票
1 回答
764 浏览

security - Windows 安装程序安全/凭据问题

伙计们,

我目前有一个奇怪的问题,Visual Studio 2010 构建的 MSI ......

当我运行 msi 时,它会执行一些任务,然后执行我们构建的工具 - 然后该工具执行一些我们无法在自定义任务中完成的更高级的工作。

这里的问题是,当 msi 启动我的自定义构建工具时,它不会使用与我启动 MSI 相同的凭据(即我的管理登录名)执行它。

是否有我可以传递给 MSI 的参数来执行此操作?或者也许我可以在启动时将凭据传递给进程?

我的过程开始时Process process = Process.Start(procInfo)没有花哨的东西。我还注意到传递参数化用户名/密码/域的能力,但这会因正在安装的用户而异 - 可以以某种方式从安装程序中提取吗?

欢迎任何帮助(或问题)。

戴夫

编辑:为清楚起见...我在我的域帐户下运行 MSI,我希望我的自定义进程在该“上下文”下运行。目前,它在 SYSTEM 帐户(而不是 mydomain\me)下启动(无论我是否以管理员身份启动)。如果有帮助,我正在使用 Windows Server DataCenter 版本...

我还应该补充一点,我认为这是一个政策问题,但我不知道要检查什么/在哪里检查......

0 投票
2 回答
4176 浏览

c# - Process.Start() 不在同一用户下生成新进程

我一直认为,当您运行一个进程(domain\user) mydomain\myuser时,使用Process.Start()它时会使用相同的凭据启动这个新进程 - mydomain\myuser

我遇到的问题是我的Process.Start()调用似乎是在 SYSTEM 帐户下创建一个进程,这导致我在启动的进程中出现权限问题(由于它所做的工作,它必须在管理员帐户下运行)。如果它改变了事情 - 我正在从windows installer 中生成这个过程(一个自定义构建的 exe) 。

有什么建议么?我已经阅读了有关 Windows 组策略(可能)对此产生影响的信息,但如果我说实话,它对我来说已经丢失了。

编辑:一个小片段:

其中exenamecommandLine是此方法主体的参数:

0 投票
2 回答
5454 浏览

c# - 如何确保 C# 的 Process.Start 将扩展环境变量?

我正在尝试创建一个这样的过程:

现在环境变量“red_root”肯定存在于衍生进程的环境变量中,但执行似乎没有扩展环境变量,因此找不到文件。如何让 Process.Start 扩展文件名中的环境变量?

0 投票
1 回答
1468 浏览

c# - 无法从 C# 中的开始菜单快捷方式启动 powerpoint

我正在尝试基于开始菜单快捷方式启动程序。特别是,我正在尝试根据其开始菜单快捷方式启动 powerpoint。为此,我使用了 IWshRuntimeLibrary。

我能够成功找到快捷方式并创建 IWshShortcut 对象。但是,一旦我尝试运行快捷方式的支持应用程序(通过 Process.Start(shortcut.TargetPath,shortcut.Arguments)),就会发生 Win32Exception:

我能找到的唯一相关答案是在这个讨论中。我的项目已经构建为 x86 应用程序

由于它似乎相关,这里是我系统的一些背景。我正在运行 Windows 7 Professional 64 位,并安装了 Microsoft Office 2010。这是用 Visual Studio 2010 编写的控制台应用程序的一部分,针对 .NET Framework 4 客户端配置文件。

我正在研究以下替代解决方案:

Windows API 代码包:http
://code.msdn.microsoft.com/WindowsAPICodePack 没有 IWshRuntimeLibrary 的快捷方式:如何在 c# 中解析 .lnk

很抱歉缺少合理的链接。这是我的第一篇文章,显然我不能使用标签插入多个。

0 投票
2 回答
2593 浏览

c# - 启动第二个实例时 Adob​​e Reader 进程失败

Process在我们的 C# WinForms 应用程序中,我们生成 PDF 文件并通过该类启动 Adob​​e Reader(或任何默认系统 .pdf 处理程序) 。由于我们的 PDF 文件可能很大(大约 200K),我们处理该Exited事件然后清理临时文件。

当文件被打开然后再次关闭时,系统会按要求工作。但是,当打开第二个文件时(在关闭 Adob​​e Reader 之前),第二个进程会立即退出(因为 Reader 现在正在使用它的 MDI 功能)并且在我们的Exited处理程序中,我们的 File.Delete 调用应该会失败,因为它已被现在加入的 Adob​​e 进程锁定。然而,在阅读器中,我们得到:

打开此文档时出错。找不到该文件。

不寻常的是,如果我在文件删除之前放置一个调试器断点并允许它尝试(并失败)删除,那么系统会按预期运行!

我很肯定该文件存在,并且相当肯定该文件的所有句柄/文件流在开始该过程之前都已关闭。

我们使用以下代码启动:

注意:我们使用_pdfProcessDictionary来存储对 Process 对象的引用,以便它们保持在范围内,以便可以成功引发 Exited 事件。

我们的清理/退出事件是:

可能的解决方案:

  • 检测文件是否还在另一个进程中打开
  • 检测到第二个进程还没有真正完全退出,而是在第一个进程中打开了文件
0 投票
4 回答
21831 浏览

c# - How can a Windows Service start a process when a Timer event is raised?

I have created a Windows Service with Timer and in firing event of timer.Elapsed I am creating a process (System.Diagnostics.Process.Start(exe path)) at interval of 5 seconds. But this process does not get created on the firing of an event.

Is there any other way of doing this?

Thanks in advance.

0 投票
6 回答
4360 浏览

c# - C# 找不到指定的文件

您好我正在尝试创建一个使用 msg.exe 通过网络发送消息的应用程序。

当我从 cmd 执行 msg 时,一切正常,但是当我以无法打开的形式打开 cmd 时,使用 cmd 转到 system32 文件夹并且文件未显示在那里,但是当我正常浏览或使用 cmd 时,它是和 evrything作品

在另一台计算机上对其进行了测试,应用程序运行良好,在此 1 上运行 win 7 64 位。

这是我用来打开 cmd 的代码示例:

我以管理员身份运行我也尝试过直接从 msg.exe 执行它,这似乎是 64 位的问题,适用于所有 32 位系统,但不适用于任何 64 位

编辑:好的,我在运行 64 位 32 位应用程序时发现问题无法在系统 32 文件夹中运行 64 位应用程序。当尝试访问此文件夹时,它会将您重定向到 %WinDir%\SysWOW64 解决方法是使用此路径 C:\Windows\Sysnative\file (%windir%\Sysnative)

0 投票
2 回答
5403 浏览

c# - mono Process.Start 如何找到bash?

在我的 webapp 中,我执行以下操作。我知道它是正确的,因为我尝试了 1)将 start_sz 转储到文本文件 2)su www-data 3)复制/粘贴提取字符串并且它有效。

我得到了下面的例外,所以根据上面的推理,我相信它的说法 bash 找不到。

找不到指定的文件

在 System.Diagnostics.Process.Start_shell (System.Diagnostics.ProcessStartInfo startInfo,System.Diagnostics.Process 进程)[0x00000] 在:0

在 System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo,System.Diagnostics.Process 进程)[0x00000] 在:0

在 System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo) [0x00000] 在:0

在 System.Diagnostics.Process.Start (System.String 文件名) [0x00000] in :0

在 MySite.QueueManager.MakeLink (System.String fn) [0x00000] in :0

在 MySite.QueueManager.ImageQueue2 () [0x00000] 中:0

在 MySite.QueueManager.ImageQueue () [0x00000] 中:0

那么,我该如何解决这个问题?基本上我需要在运行时在我的 asp.net 应用程序中创建一个硬链接(软链接也可以)。

我想也许我需要完整的 bash 路径,所以我尝试/bin/bash -c了但是也没有用。

0 投票
1 回答
1896 浏览

vb.net - 提供用户帐户时,System.Diagnostics.Process.Start 在启动时不起作用

我有一个应该在启动时运行的 vb.net 2008 应用程序。在满足某些条件后,PC 应该会重新启动。以下是失败的代码:

myUsername 和 myDomain 都是字符串,而 myPassword 是 SecureString。该应用程序在手动执行时可以正常工作,但在从启动时执行时会出现以下错误(通过放置在启动文件夹中或通过添加到注册表):

目录名无效

此外,当最后 3 个参数被省略并且用户拥有必要的权限时,程序可以正常执行。

如何在启动时使用特定的备用用户凭据强制重新启动?