这是带有命令的c ++代码,用于在网络模式和重启的safeboot中运行窗口的命令,此代码仅在32位操作系统中运行,但在64位中仅重启将发生但不在安全引导模式下。
[注意]:我在管理模式下运行应用程序。
system("bcdedit /set safeboot network > Out.txt");
system("shutdown -r -f -t 0");
还有ShellExecute()
ShellExecute(0, L"open", L"cmd.exe", L"/C bcdedit /set safeboot network > Out.txt", 0, SW_HIDE);
ShellExecute(0, L"open", L"cmd.exe", L"/C shutdown -r -f -t 0 > Out.txt", 0, SW_HIDE);
我尝试在管理员模式下手动操作Open CMD
c:\WINDOWS\system32>bcdedit /set safeboot network
The Operation completed successfully.
c:\WINDOWS\system32>shutdown -r -f -t 0
手动它正在工作(在safeboot中运行),但当我尝试通过代码Windows重新启动,但不是在safeboot中。
如何使这个工作32位和64位操作系统?
您是否以管理员身份使用system()调用程序运行程序?如果你不这样做,我不希望这个号召成功。
> Out.txt
可能不是有效参数请注意,系统不是重定向标准io的命令shell解释器。如果你想获得输出,那么最好使用CreateProcess或一些包装器(如boost.Process)手动重定向它们。
我在64
位机器上执行程序。 bcdedit.exe
文件存在于C:\Windows\System32
虽然C:\Windows\System32
在系统路径中,但在x86
过程中受File System Redirector的影响。这意味着C:\Windows\System32
实际上解析为C:\Windows\SysWOW64
在32
中没有qcxswpoi位版本的bcdedit.exe
解决方案是改变目标C:\Windows\SysWOW64
或AnyCPU