问题标签 [createprocess]
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.
winapi - CreateProcess 以管理员身份运行
在我的 Win32 应用程序中,我能够运行具有重定向输入和输出到我创建和管理的匿名管道的子进程 - 这一切都适用于 CreateProcess() 函数。但是,在 Win7(可能是 Vista)上,如果需要以管理员身份运行该进程,则此操作将失败。所以我正在寻找的是一种在资源管理器中执行相当于“以管理员身份运行”命令的方法,该命令将显示标准 UAC 提示符,然后创建具有提升权限的进程。我已经看到有关使用 ShellExecute 的“runas”选项来执行此操作的文章,但是当我看到它时,我没有控制我需要将 std 输入和输出重定向到我的管道。有什么建议么?
android - android adb start-server 的 CreateProcess?
当我使用 CreateProcess 创建进程 adb.exe 时,它会阻塞在 ReadFile 中。
如果我将代码更改为
它可以工作,但是当我删除 printf 代码时,它会再次阻塞。
在 adb.exe 的代码中,我看到如下代码:
我认为 adb.exe 的子进程继承了 adb.exe 的句柄,如果 adb.exe 的子进程不退出,ReadFile 将永远阻塞。但是当我在命令中执行“adb.exe start-server”时,一切正常。那么windows命令如何调用CreateProcess和ReadFile呢?
windows-7 - 如何将 CreateProcess 转换为 ShellExecuteEx?
我使用 MS detour 库来挂钩 CreateProcess,它在 Win7 上运行良好。然后我想用 ShellExecuteEx 替换绕行的 CreateProcess,以便我可以使用“runas”以管理员权限静默运行程序。不幸的是,参数类型不一样。
这是函数签名:
这里我调用 ShellExecuteEx:
但是,这个赋值有错误: ShExecInfo.lpFile = lpszImageName;
VC2005 投诉数据类型不一样:"cannot convert from const unsigned char * to const char *"
。
但是数据类型是LPCWSTR
CreateProcess 中的参数 lpszImageName 和 ShExecInfo.lpFile 是LPCTSTR
.
如果我使用 (const unsigned char*) 转换 lpszImageName,lpFile 的值只是 lpszImageName 值的第一个字母。
例如,如果 lpszImageName 是“C:\windows\system32\cmd.exe”。赋值后,lpFile 的值只有 'C'。
如何从 LPCWSTR 转换为 LPCTSTR?或者我该如何进行转换?
谢谢!!!
c++ - 有没有办法让 CreateProcess 创建的进程在另一个窗口中打开?
我希望能够在主进程中使用 CreateProcess 打开 GUI 应用程序,并将 GUI 显示在我从主进程中创建的窗口中。有谁知道如何实现这一目标?谢谢!
file - Gcc.exe:CreateProcess:没有这样的文件或目录 - 错误?
我正在编写一个 Objective C 程序,并将其保存为“hello.m”。问题是当我尝试使用 MinGW 编译它时出现错误
gcc hello.m //我用于编译,它给出了以下错误
gcc.exe:CreateProcess:没有这样的文件或目录
有什么办法可以解决..这样我就可以继续前进..
谢谢你
c - 将 argv[] 传递给 CreateProcess() 的方法
我的 C Win32 应用程序应该允许传递完整的命令行以启动另一个程序,例如
myapp.exe
可能看起来像
我可以考虑一些解决方法:
- 使用
GetCommandLine()
并找到对应于 argv[i] 的子字符串 - 写一些类似于另一个SO问题
ArgvToCommandLine()
中也提到的东西
它们都冗长并且重新实现了繁琐的 windows 命令行解析逻辑,这已经是CommandLineToArgvW()
.
我的问题有“标准”解决方案吗?变通办法的标准(Win32、CRT 等)实现算作一种解决方案。
winapi - Powershell:通过 CreateProcess() 调用时某些模块不可用
在什么情况下某些 PowerShell 模块不可用?
CreateProcess()
当我使用命令行创建进程时
powershell -Command "Get-Module -ListAvailable"
从命令提示符执行相同的语句时,我没有得到所有模块。
我必须在 STARTUPINFO 或 PROCESS_INFORMATION 结构中设置任何字段吗?
c++ - 问题生成应用程序
天哪,这太奇怪了,我不知道该说什么。简短的版本是我有一个模拟器应用程序,当用户要求我时,我会从我的应用程序中生成它。它最近停止工作,尽管我可以从命令行或开始菜单运行模拟器。这可能是由于迁移到 VS2010 或 Windows 7 或我没有注意到查看源代码控制差异的原因。
我有第二个模拟器,我尝试以相同的方式生成它,它工作正常。
默认情况下,我在 CreateProcess 周围使用 Qt3 的 QProcess 包装器,但我使用系统、我自己的 CreateProcess 和 ShellExecute 得到了相同的行为。
但是,cmd.exe "/c application params" 的 ShellExecute 确实为我提供了更多信息。我得到对话框
“程序无法启动,因为您的计算机中缺少 MSVCR80.dll。请尝试重新安装程序以解决此问题。”
不方便的是,父应用程序和第二个模拟器都使用 MSVCR80.dll。
将 MSVC*80.dll 从 g:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5 复制到与我的可执行文件相同的目录后,错误消息变为
“运行时错误!
程序:g:\path\to\app.exe
R6034
应用程序试图错误地加载 C 运行时库。
请联系应用程序的支持团队以获取更多信息。
其次是
应用程序无法正确启动 (0xc0000142)。单击确定关闭应用程序。
而且,再一次,应用程序在这些 dll 就位的命令行中运行良好。
更新:
我怀疑这可能与环境有关,所以将我的 ShellExecute 机制更改为 cmd /c set && app params。我用这些相同的参数设置了一个 cmd.exe,我的应用程序现在也同样崩溃了。当我弄清楚原因时会更新:)
这是 MATLAB 的组件运行时工具,它正在修改我的进程的 PATH 变量以产生不良影响。它在自己的目录中添加了 dll 并造成严重破坏。
windows - 关于进程访问权限的问题
我得到了以下场景:
进程 A 创建进程 B,然后 B 尝试使用 OpenProcess() 获取 A 的句柄。我希望 B 拥有 A 的 PROCESS_ALL_ACCESS 权限。
我应该如何实现这一目标?
谢谢。
c++ - 如何确定生成的进程何时准备就绪?(使用 CreateProcess() 和 FindWindow())
这应该很简单:我正在创建一个使用 win32CreateProcess()
函数生成进程的程序。加载此过程后,我发现它的窗口使用FindWindow
并使用SendMessage()
. 问题是,我如何知道该窗口何时准备好接受消息?
考虑以下:
上面的代码(几乎?)总是会失败;无法快速创建和找到该窗口。如果我在and调用Sleep(1000)
之间放置一个线程等待,例如,它可以正常工作。但这感觉像是一个非常糟糕的黑客攻击。CreateProcess
FindWindow
我该如何改进呢?