2014-09-01 78 views
0

我嘗試使用此代碼運行程序:如何從隱藏的文件夾中運行程序WinAPI的

PROCESS_INFORMATION ProcInfo = { 0 }; 

    STARTUPINFO StartInfo = { 0 }; 
    StartInfo.cb = sizeof(StartInfo); 

    if (!::CreateProcessW(NULL, (LPWSTR)wszPathToFile, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &StartInfo, &ProcInfo)) { 
     return GetLastError(); 
    } 

但我收到錯誤消息:系統找不到指定的路徑。 wszPathToFile - 文件路徑(例如:「C:\ test \ test.exe/retest」)。文件夾「測試」被隱藏 如何解決它?

+1

這樣的表演讓我很緊張。 – chris 2014-09-01 17:42:44

+0

szPathToFile - 寬字符串 – igas 2014-09-01 17:52:29

+0

沒有必要施放它。 – chris 2014-09-01 17:54:21

回答

1

該文件夾被隱藏不相關。這在這裏沒有影響。

正如在評論中所討論的那樣,您正在鑄造lpCommandLine參數的事實表明szPathToFile不是正確的類型。它必須是一個指向寬字符可修改數組的指針。如果是的話,那麼你可以省略劇組,編譯器會直接接受szPathToFile

最有可能的是szPathToFile實際上是一個指向ANSI編碼數組的8位char

+0

我使用CreateProcessW。該功能適用​​於Unicode。問題是該目錄是隱藏的。一切正常,如果目錄是可見的。 – igas 2014-09-29 07:46:38

+0

顯然你正在調用Unicode功能。然而,演員是假的。這意味着'szPathToFile'編碼錯誤。演職人員不能改變這一點。它只是停止編譯器幫助你。刪除演員。正如我所說,隱藏或不是沒有區別。也就是說,如果你的意思是隱藏着'FILE_ATTRIBUTE_HIDDEN'。如果你用一些邪惡的手段來隱藏事物,那麼情況就不同了。 – 2014-09-29 07:55:08