Katou Megumi~ 2024-03-06 17:08 采纳率: 0%
浏览 2

c++实现屏幕安全模式控制失败

为什么system("C:\Windows\System32\bcdedit.exe /set {current} safeboot network");运行了没反应,安全引导下的网络单选框还是没勾上,我用cmd运行bcdedit.exe /set {current} safeboot network就没问题,我的程序权限是管理员级别。
别的比如system("start www.baidu.com");有反应,打开了百度。

  • 写回答

3条回答 默认 最新

  • GISer Liu 2024-03-06 17:09
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    根据您的描述,您想要通过C程序来实现将当前系统设置为安全模式并启用网络,但是使用system函数调用``` bcdedit.exe

    解决这个问题的一种思路是确保在C程序中正确调用``` bcdedit.exe ```命令。您提到在命令行中直接执行``` bcdedit.exe /set
    {current} safeboot network ```命令是有效的,因此问题可能出现在程序调用``` system ```函数时。
    以下是一种可能的解决方案:
    1.  **使用绝对路径调用``` bcdedit.exe ```命令** :确保在C程序中调用``` bcdedit.exe ```时使用完整的绝对路径。虽然在命令行中直接运行命令时,系统可以正确解析``` bcdedit.exe ```的位置,但在使用``` system ```函数调用时,可能需要提供绝对路径以确保准确性。
    cCopy code
    

    system("C:\Windows\System32\bcdedit.exe /set {current} safeboot network");

    2.  **检查返回值** :调用``` system ```函数后,检查其返回值以确定命令是否成功执行。您可以使用``` system ```函数的返回值来检查命令是否成功执行。返回值为0表示成功执行,其他值表示执行失败。
    cCopy code
    

    int result = system("C:\Windows\System32\bcdedit.exe /set {current} safeboot network");
    if (result == 0) {
    printf("命令执行成功。\n");
    } else {
    printf("命令执行失败。\n");
    }

    3.  **使用``` ShellExecute ```函数** :``` ShellExecute ```函数可以以管理员权限执行命令。这可能比使用``` system ```函数更可靠。以下是一个使用``` ShellExecute ```函数的示例:
    cCopy code
    

    #include <Windows.h>
    #include <Shellapi.h>
    int main() {
    SHELLEXECUTEINFO ShExecInfo = {0};
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb = "runas";
    ShExecInfo.lpFile = "C:\Windows\System32\bcdedit.exe";
    ShExecInfo.lpParameters = "/set {current} safeboot network";
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow = SW_HIDE;
    ShExecInfo.hInstApp = NULL;
    ShellExecuteEx(&ShExecInfo);
    WaitForSingleObject(ShExecInfo.hProcess, INFINITE);
    CloseHandle(ShExecInfo.hProcess);
    return 0;
    }

    请注意,在使用 ShellExecute 函数时,需要添加 Shellapi.h 头文件,并链接 Shell32.lib

    库。 通过以上方法,您应该能够在C程序中成功调用 bcdedit.exe

    ```命令,将系统设置为安全模式并启用网络。如果仍然遇到问题,请确保您的程序具有足够的权限来执行该命令,并确保防病毒软件或安全策略不会阻止该操作。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    评论

报告相同问题?

问题事件

  • 创建了问题 3月6日

悬赏问题

  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题