Я пытался создать программу, которая использует CreateProcess()
для запуска распознавания речи в Windows 8.1. После создания процесса я получаю ошибку 740 (нужно повысить). Но когда я запускаю распознавание речи в качестве стандартного пользователя (либо, вызывая C:\Windows\Speech\Common\sapisvr.exe -SpeechUX
в cmd, либо открывая его в центре Ease of Access), нет подсказки с просьбой о повышении прав администратора. Почему он запрашивает его, когда я пытаюсь создать тот же процесс программно? Есть ли обходной путь? Мне нужно, чтобы он работал для любого стандартного пользователя.Распознавание речи или msconfig без повышения в C++
//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(), я не могу даже вызвать сам процесс.
Спасибо.
Запуск распознавания речи с помощью 'ShellExecute' все еще заставляет меня с диалогом администратора. – MiragePV
Фактически, запуск 'ShellExecute' со вторым параметром' 'runas'' делает стандартный пользовательский пароль администратора, но его запуск со вторым параметром' NULL' не выполняется. Msconfig нельзя запускать в любом случае. Наверное, сейчас невозможно запустить его без подсказки. – MiragePV
Может быть интересно это [ответить] (http://stackoverflow.com/a/10165196/2050745) –