Я пытался создать программу, которая использует CreateProcess()
для запуска распознавания речи Windows в Windows 8.1. При создании процесса я получаю ошибку 740 (требуется повышение). Но когда я запускаю распознавание речи в качестве обычного пользователя (вызывая C:\Windows\Speech\Common\sapisvr.exe -SpeechUX
в cmd или открывая его в центре специальных возможностей), не появляется запрос на повышение прав администратора. Почему он запрашивает это, когда я пытаюсь создать тот же процесс программно? Есть ли обходной путь для этого? Мне нужно, чтобы он работал для любого стандартного пользователя.
//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() я не могу даже вызвать сам процесс.
Спасибо.