Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中无提升的语音识别或msconfig+;_C++_Windows_Process_Speech Recognition_Createprocess - Fatal编程技术网

C++ C+中无提升的语音识别或msconfig+;

C++ C+中无提升的语音识别或msconfig+;,c++,windows,process,speech-recognition,createprocess,C++,Windows,Process,Speech Recognition,Createprocess,我一直在尝试制作一个使用CreateProcess()在windows 8.1上运行windows语音识别的程序。在创建一个进程时,我得到了错误740(需要提升)。但当我以标准用户身份运行语音识别时(通过在cmd中调用C:\Windows\speech\Common\sapisvr.exe-SpeechUX,或者在Easy of Access center中打开它),没有提示要求我提升到管理员权限。当我试图以编程方式创建相同的流程时,为什么它会要求这样做?有解决办法吗?我需要它为任何标准用户工作

我一直在尝试制作一个使用
CreateProcess()
在windows 8.1上运行windows语音识别的程序。在创建一个进程时,我得到了错误740(需要提升)。但当我以标准用户身份运行语音识别时(通过在cmd中调用
C:\Windows\speech\Common\sapisvr.exe-SpeechUX
,或者在Easy of Access center中打开它),没有提示要求我提升到管理员权限。当我试图以编程方式创建相同的流程时,为什么它会要求这样做?有解决办法吗?我需要它为任何标准用户工作

//This invokes SR without any problem, as well as manually typing into cmd
system("C:\\Windows\\Speech\\Common\\sapisvr.exe -SpeechUX");

//This returns error if not run as admin
TCHAR[] param = TEXT("-SpeechUX");
if (!CreateProcess(TEXT("C:\\Windows\\Speech\\Common\\sapisvr.exe"),
                   param,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{
    printf("error creating process %d", GetLastError());
    return 1;
}
尝试调用msconfig.exe时也会发生同样的情况。我知道msconfig需要更多的特权,但据我所知,它应该可以由任何人运行,并且在运行时(单击其中一个选项卡时)应该征得管理员同意。但是使用CreateProcess()我甚至无法调用进程本身


谢谢。

清单中标记为“requireAdministrator”的可执行文件不能使用
CreateProcess()
从非提升进程启动。相反,将返回ERROR\u ELEVATION\u REQUIRED<必须改用code>ShellExecute()或
ShellExecuteEx()
runas
动词用于启动需要提升用户权限的程序。在您的情况下,您有权利,但程序没有。我会给你更多的权利

ShellExecute(NULL, "runas", "C:\\Windows\\Speech\\Common\\sapisvr.exe", param, 0, SW_SHOWNORMAL);

无法使用
CreateProcess()
从非提升进程启动清单中标记为“requireAdministrator”的可执行文件的文档。相反,将返回ERROR\u ELEVATION\u REQUIRED<必须改用code>ShellExecute()或
ShellExecuteEx()
runas
动词用于启动需要提升用户权限的程序。在您的情况下,您有权利,但程序没有。我会给你更多的权利

ShellExecute(NULL, "runas", "C:\\Windows\\Speech\\Common\\sapisvr.exe", param, 0, SW_SHOWNORMAL);

使用
ShellExecute
启动语音识别的文档仍然会提示我使用admin对话框。事实上,使用第二个参数运行
ShellExecute
“runas”会让标准用户需要管理员密码,但使用第二个参数运行它却不需要管理员密码。Msconfig无法以任何方式启动。我想现在不需要提示就无法运行它。使用
ShellExecute
启动语音识别时,仍然会提示我使用admin对话框。事实上,使用第二个参数
运行
ShellExecute
“runas”
会让标准用户需要管理员密码,但使用第二个参数
NULL
运行它就不需要管理员密码。Msconfig无法以任何方式启动。我想现在没有提示是不可能运行它的。