CreateProcess 成功,但 GetLastError() 返回访问被拒绝

2023-12-13

由于返回值冲突,我有点困惑CreateProcess() and GetLastError()。当我使用CreateProcess()以类似于下面的方式,它成功并似乎完成了所需的任务。然而,GetLastError()仍然返回访问被拒绝。

如果访问被拒绝,为什么它看起来已完成任务。相反,如果CreateProcess()成功了,为什么GetLastError()返回访问被拒绝?

或者是我使用GetLastError()不正确?我只应该在以下情况下使用它吗CreateProcess()返回失败值? (我对以下行为的理由是,我认为安全总比后悔好)

    SetLastError(0);
    hello = CreateProcess(_T("C:\\Windows\\System32\\cmd.exe"), 
        _T("C:\\Windows\\System32\\cmd.exe /C ant debug"),
        NULL,NULL,false,0,NULL,
        _T("C:\\My\\Directory"),&siStartupInfo, &piProcessInfo);
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ALLOCATE_BUFFER 
        |FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(), 
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
        (LPTSTR)&errorText, 0, NULL); 
    AfxMessageBox(errorText);

这种行为正常吗?在里面CreateProcess()文档,它提到使用GetLastError() when CreateProcess()失败了,但它没有提到相反的情况。不是批评文档,只是想进行一些澄清。

无论第二个参数在CreateProcess() is NULL或不。也许这与cmd.exe权限?如果是这样的话,不应该CreateProcess()失败?谢谢。


从文档GetLastError

每个设置最后一个错误代码的函数的文档的“返回值”部分注明了该函数设置最后一个错误代码的条件。大多数设置线程最后错误代码的函数都会在失败时设置它。然而,某些函数在成功时还会设置最后一个错误代码。 [强调我的]

我认为你会得到经验丰富的结果,因为一旦成功,CreateProcess不设置错误值GetLastError返回。相反,您致电GetLastError返回由之前调用的另一个函数设置的错误

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CreateProcess 成功,但 GetLastError() 返回访问被拒绝 的相关文章

随机推荐

  • 将 dplyr 查询保存到 dbplyr 中的不同架构

    我有一个 JDBC 连接 想要从一个模式查询数据并保存到另一个模式 library tidyverse library dbplyr library rJava library RJDBC access the temp table in
  • Plotly R:根据折线图中的不同线条更改悬停信息字体颜色

    我想更改一些折线图线的悬停信息字体颜色 但不是全部 这是一些与我的代码类似的代码 number lt rep c 00 01 02 each 4 animal lt rep c cat dog mouse each 4 year lt re
  • 按钮上的长文本会弄乱 GridLayout 行

    我有一个 GridLayout 用于承载多个按钮 按两列排序 所有按钮都有固定的高度和宽度 如果其中一个按钮包含太多文本 布局就会混乱 我希望布局能够正确维护行 无论按钮是否有太多文本 我将在稍后处理显示太多文本的情况 使用文本的自动大小
  • T/F:在过程中使用 IF 语句会产生多个计划

    在回应this问题 KM 说 如果您使用的是 SQL Server 2005 或更高版本 则可以使用 IF 在同一过程中进行多个查询 并且每个查询都会为其保存一个查询计划 相当于旧版本上的每个查询的过程 请参阅我的答案中的文章或此链接到正确
  • 如何在查询字符串中安全地包含密码

    是否可以在 C asp net 站点的查询字符串中安全地包含密码 我所知道的一些假设和事情 该网站没有也不会有与其他网站的链接 图像 javascript 分析 因此无需担心引用链接 与 Web 浏览器的所有通信都将通过 https 进行
  • 如何在Python中动态添加If Else语句?

    目前 我开发了一个脚本 该脚本将读取传入 最新的电子邮件并根据某些条件 例如电子邮件主题和文本 过滤电子邮件 当用户选择subject or text 他们可以选择要过滤电子邮件的条件 等于 不包含等 我的问题我有一个演示网站 可以让用户添
  • 如何阻止 X Window 接收用户输入?

    我想在 Linux 桌面上创建一些窗口以用于简单的布局 我需要避免用户输入到这些窗口 并且我认为避免窗口获得焦点就足以实现这种情况 我认为我可以用xprop命令 通过设置WM HINTS属性 但我还没有找到有关如何执行此操作的具体文档 顺便
  • Passport.js - 使用 Passport-local 对来自 MongoDB 的用户进行身份验证

    我的 MongoDB 中有一个简单的用户集合 我使用 mongo native 驱动程序 email email protected password 123456 id oid 50658c835b821298d3000001 当我通过电
  • 将参数传递给 main

    我知道这是相当基本的 但我仍然被困住 所以我有一个需要接受变量 n 的函数 所以这是我的主要函数 int main int argc char argv sort argv 1 我这样调用该程序 sort 4
  • Typescript 枚举作为指定对象中的键预期会出现错误,但没有

    在使用枚举作为对象键时 我遇到了 TS 的一些奇怪行为 我期望 TS 错误 但事实并非如此 我不明白为什么 enum List sm sm md md export interface Dictionary
  • mpatches.FancyArrowPatch 太短

    我想用mpatches FancyArrowPatch绘制许多路径 单个图中数百条 我以前用过plt arrow 但它使绘图窗口变慢 并且比补丁方法花费更长的时间 无论如何 当我开始使用时mpatches Arrow我在大尺度上得到了很好的
  • 错误:.net 中的 db.SaveChanges() 发生引用完整性约束违规?

    我创建了一个 WPF 应用程序Entity framework 4 0 当我尝试插入记录时PhoneNumber表成功插入第一条记录 但是 当我循环遍历某个列表并尝试将另一个项目插入到PhoneNumber表插入记录但显示错误为 Inval
  • 使用 Scipy 与 Matlab 拟合对数正态分布

    我正在尝试使用 Scipy 拟合对数正态分布 我之前已经使用 Matlab 完成了此操作 但由于需要将应用程序扩展到统计分析之外 我正在尝试在 Scipy 中重现拟合值 下面是我用来拟合数据的 Matlab 代码 Read input da
  • HERE Routing API V8:如何获取具有多个经过路径点的路线

    在 v7 中 这是获取具有多个经过路径点的路线的方法 https route api here com routing 7 2 calculateroute json waypoint0 32 353514 61 126775 waypoi
  • PermissionError: [Errno 13] 访问 aws ec2 时权限被拒绝

    我在虚拟机 在 Mac 上 上运行 ubuntu 16 04 在 aws ec2 ubuntu 18 04 上运行 我正在尝试运行 Jupiter 笔记本aws ec2并尝试通过本地 Ubuntu 上的网络浏览器远程访问它 我能够访问远程
  • 如何在 React 组件中从另一个文件渲染 HTML?

    是否可以在 React 组件中从另一个文件渲染 HTML 我已经尝试过以下方法 但它不起作用 var React require react Template html var template require template modul
  • OleDB更新命令不改变数据

    我使用 Microsoft Access 文件作为数据库 我没有问题SELECT and INSERT查询 但当我尝试UPDATE 数据库中的记录不会改变 下面是我用来运行更新的代码 调试日志中没有异常或错误 cnn new OleDbCo
  • Angularjs ng-show 方法被调用太多次[重复]

    这个问题在这里已经有答案了 我有一个 ng repeat 循环 它循环 3 个事件 在每个事件中 我想检查登录的用户是否是与该事件关联的团队的玩家 问题是 我的代码正在进入is player 每次加载页面大约30次 这显然会导致问题 因为它
  • 如何在 AngularJS 中正确使用指令

    我正在使用 AngularJS 上的指令执行第一步 但该指令对我不起作用 我有一个ng repeat list ul li li ul 正在被过滤 scope activeFilter filterValue 我正在尝试创建ng after
  • CreateProcess 成功,但 GetLastError() 返回访问被拒绝

    由于返回值冲突 我有点困惑CreateProcess and GetLastError 当我使用CreateProcess 以类似于下面的方式 它成功并似乎完成了所需的任务 然而 GetLastError 仍然返回访问被拒绝 如果访问被拒绝