gpt4 book ai didi

windows - TerminateProcess() 返回 EINVAL

转载 作者:IT王子 更新时间:2023-10-29 02:35:47 24 4
gpt4 key购买 nike

我正在尝试调试一个问题,但我不明白。

func BackgroundProcess(lpCommandLine string) (error) {
var lpProcessAttrs windows.SecurityAttributes
var lpThreadAttrs windows.SecurityAttributes
var lpProcInfo windows.ProcessInformation
var lpStartup windows.StartupInformation

// convert to null terminated
lpCli, err := StringToLpStr(lpCommandLine)
if err != nil {
return err
}

if ok := CreateProcess(nil, lpCli, &lpProcessAttrs, &lpThreadAttrs, true, 0, nil, nil, &lpStartup, &lpProcInfo); !ok {
return GetLastError()
}
// DeleteProcessAccessRight is just a const for 1
childProcessHandle = OpenProcess(DeleteProcessAccessRight, false, lpProcInfo.dwProcess)
if ok := TerminateProcess(childProcessHandle, 0); !ok {
return GetLastError()
}
}

如果我用 BackgroundProcess("C:\\Windows\\System32\\calc.exe") 调用它,我得到错误 EINVAL,它是 无效参数,在 TerminateProcess 上。查看 TerminateProcess 的 MSDN 文档,您需要首先使用 PROCESS_TERMINATE 访问权限打开对进程的访问权限。我正在使用该访问权限打开流程,因此它应该可以正常工作。我做错了什么/遗漏了什么?

最佳答案

所以我想通了这个具体问题。我正在使用 C:\\Windows\\System32\\calc.exe 进行测试,这是一个具有运行时代理的通用 Windows 应用程序。我一开始使用 C:\\Windows\\System32\\notepad.exe 进行测试,它就开始工作了。一旦我弄清楚如何处理运行时代理,我就会更新这个答案。

关于windows - TerminateProcess() 返回 EINVAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54136672/

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