gpt4 book ai didi

c - 在 Windows XP 上 system() 调用返回 "Permission Denied"

转载 作者:行者123 更新时间:2023-11-30 18:09:11 25 4
gpt4 key购买 nike

我在 Windows XP 上运行的 C 程序遇到问题,当它尝试调用 system() 时,出现权限被拒绝 (EACCES) 错误。

我在命令字符串中输入什么似乎并不重要,这些命令都是手动工作的,但在通过 system() 执行时会出现 Permission Denied 错误

另一件有趣的事情是,该程序在其他 XP 机器上可以正常运行,但在这台机器上不行。这使得它感觉像是某种操作系统设置,但我不完全确定 system() 在幕后做了什么,并且想了解这里发生了什么。

这是我的测试代码:

fprintf( stderr, "DEBUG: Running test of system(NULL) call...\n" );
if ( ( ret = system( NULL ) ) != 0)
fprintf( stderr, " DEBUG: ret: %d: errno: %d, %s\n", ret, errno, strerror( errno ) );

fprintf( stderr, "DEBUG: Running test of system(\"sleep 1\") call...\n" );
if ( ( ret = system( "sleep 1" ) ) != 0 )
fprintf( stderr, " DEBUG: ret: %d: errno: %d, %s\n", ret, errno, strerror( errno ) );

这会产生输出

DEBUG: Running test of system(NULL) call...
DEBUG: ret: 1: errno: 0, No error
DEBUG: Running Test of system("sleep 1") call...
DEBUG: ret: -1: errno: 13, Permission denied

谢谢。

更新:我还修改了代码以使用 CreateProcess() 而不是 system(),但仍然收到“访问被拒绝”错误 (5)。这使得它听起来更像是操作系统设置,但我不知道在哪里查看。

UPDATE2:进程监视器显示对路径“D:\cmd.exe”的“QueryOpen”调用失败,该路径不存在。所有其他调用都是针对 C:\WINDOWS\system32\cmd.exe,所以我不知道为什么其中一个调用是错误的。

最佳答案

您是否尝试过使用Process Monitor运行您的程序?进程监视器将向您显示程序进行的所有系统调用,以及有关调用的许多其他元数据(例如它们的参数和返回值)。它可以帮助您调试为什么会收到“权限被拒绝”错误。

关于c - 在 Windows XP 上 system() 调用返回 "Permission Denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649338/

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