gpt4 book ai didi

java - CreateProcessW 失败 (ACCESS_DENIED)

转载 作者:行者123 更新时间:2023-11-30 05:06:49 26 4
gpt4 key购买 nike

我目前将应用程序转换为使用 CreateProcessW() 而不是 Runtime.exec(),因为我需要它提供的信息。但是,对 CreateProcessW() 的任何调用都会失败,并显示错误代码 5(访问被拒绝)。我一直无法找出为什么会发生这种情况,因为 Runtime.exec() 在相​​同情况下运行良好。

我的错误可能出现在以下代码片段之一、方法调用和 jna 接口(interface)中。

public ProcessInfo createProcess(String dir, String name){
ProcessInfo pi = new ProcessInfo();
StartupInfo start = new StartupInfo();
mem.CreateProcessW(new WString(name),
null,
null,
null,
false,
0,
null,
new WString(dir),
start.getPointer(),
pi.getPointer());
return pi;
}

我对CreateProcessW的定义

boolean CreateProcessW(WString apname,
char[] comline,
Pointer p,
Pointer p2,
boolean inheritHandles,
int createFlags,
String environment,
WString directory,
Pointer startinf,
Pointer processInfo);

其他信息:

  • Runtime.exec() 使用给定的字符串成功
  • StartupInfo 的大小已设置
  • 使用的测试环境:WinXP SP3 和 Netbeans 6.9.1

使用的示例参数:

  • 名称:movimk.exe
  • 目录:C:\Programme\Movie Maker\

还使用不同的路径进行了测试,因此不是空格问题

谢谢

更新:

事实证明,错误是由我检查工作目录和exe路径后调用代码切换引起的。由于导致访问被拒绝,我实际上认为它至少找到了 exe。我将添加一个 IllegalArgumentException 来解决这个问题。

由于我在 exe 相对于工作目录的情况下遇到了额外的错误,因此我将接受该答案。感谢大家的帮助。

最佳答案

CreateProcessW 的第一个参数必须是完整路径或相对于当前目录的路径。它不能是相对于工作目录参数的路径,这似乎是您期望它执行的操作。

尝试传递 C:\Programme\Movie Maker\moviemk.exe 作为名称参数

关于java - CreateProcessW 失败 (ACCESS_DENIED),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com