近日用VC写的一程序,需要调用一批处理文件,于是我在程序中写入了如下语句:
ShellExecute(NULL,"open",Path,"","",SW_HIDE); //Path为CString变量,储存有批处理所在的路径
将release的程序右键以管理员身份运行,结果批处理文件执行失败
手工以管理员身份运行批处理,批处理执行成功
这是为什么呢?请各位指点PS:批处理的作用是对BCD的启动项进行操作
ShellExecute(NULL,"open",Path,"","",SW_HIDE); //Path为CString变量,储存有批处理所在的路径
将release的程序右键以管理员身份运行,结果批处理文件执行失败
手工以管理员身份运行批处理,批处理执行成功
这是为什么呢?请各位指点PS:批处理的作用是对BCD的启动项进行操作
你可以google一下。
#include<windows.h>
#include<tchar.h>int _tmain(int argc,TCHAR* argv[])
{
SHELLEXECUTEINFO sei={sizeof(SHELLEXECUTEINFO)};
sei.lpVerb=TEXT("runas");
sei.lpFile=TEXT("cmd.exe");//add application which you want to run as administrator here
sei.nShow=SW_SHOWNORMAL;//without this,the windows will be hiden
if(!ShellExecuteEx(&sei)){
DWORD dwStatus=GetLastError();
if(dwStatus==ERROR_CANCELLED){
printf("提升权限被用户拒绝\n");
}
else
if(dwStatus==ERROR_FILE_NOT_FOUND){
printf("所要执行的文件没有找到\n");
}
}return 0;
}