我的系统是win7,使用QProcess打开程序时被UAC所组,提示"Process failed to start: 请求的操作需要提升。"
上网看了一下,需要使用ShellExecute来打开exe文件。可是我打开时总是返回0x2(ERROR_FILE_NOT_FOUND = 2; {文件名错误})
代码如下:
QDir dir(programToStart);//programToStart="D:/G_Soft/AeroTimer/AeroTimer.exe"
QString e = "open";
wchar_t *operation = new wchar_t[e.size() + 1];
e.toWCharArray(operation);
e = dir.dirName();//e=AeroTimer.exe
wchar_t *fileNameToOpen = new wchar_t[e.size() + 1];
e.toWCharArray(fileNameToOpen);
e = programToStart.remove(dir.dirName());//e="D:/G_Soft/AeroTimer/"
wchar_t *openDirectory = new wchar_t[e.size() + 1];
e.toWCharArray(openDirectory);
qDebug()<<ShellExecute(NULL,operation,fileNameToOpen,NULL,openDirectory,SW_SHOWNORMAL);
我Debug了一下,发现*operation=111,*openDirectory=61571,*fileNameToOpen=110。不是我想要的字符串。是我转换时出问题了么?