用ShellExecute api,verb指定为“runas”,file指定为bcdedit.exe,parameter就是命令行中除去file后面的部分
注:runas在msdn中似乎并没有明确列出来
#include
#include
#include
#pragma comment(lib, "shell32.lib")
#pragma comment(linker, "/subsystem:console")
int main()
{
ShellExecute(NULL, _T("runas"), _T("bcdedit.exe"), _T("/createstore e:/bcdtoread"), NULL, SW_SHOWDEFAULT);
ShellExecute(NULL, _T("runas"), _T("bcdedit.exe"), _T("/export e:/bcdtoread"), NULL, SW_SHOWDEFAULT);
return 0;
}
我电脑uac关的,没办法测试
另:用SW_HIDE的话就不会有控制台窗口弹出来。用ShellExecuteEx的话可以获取创建的Process的HANDLE,之后你可以获取返回值来判断操作是否成功,不过记得要CloseHandle
虽然我知道百度知道上扯淡的人非常多,但是正常的人看到“你们用c语言在程序里调用成功了再来回答”真的会感觉很恶心的
取消
评论