我一直在試圖製作一個程序,它使用CreateProcess()
在Windows 8.1上運行Windows語音識別。在創建一個進程後,我得到錯誤740(需要提升)。但是當我以標準用戶的身份運行語音識別時(通過在cmd中調用C:\Windows\Speech\Common\sapisvr.exe -SpeechUX
,或者通過在易於訪問中心中打開它),沒有提示要求我提升爲管理員權限。爲什麼在我嘗試以編程方式創建相同的進程時詢問它?有沒有解決方法?我需要它爲任何標準用戶工作。在C++中沒有提升的語音識別或msconfig
//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
事實上,使用第二個參數「runas」運行'ShellExecute'使得標準用戶需要管理員密碼,但是使用第二個參數'NULL'運行它不會。 Msconfig不能以任何方式啓動。我想現在無法立即運行它是不可能的。 – MiragePV
也許有趣這[回答](http://stackoverflow.com/a/10165196/2050745) –