如何从隐藏的文件夹中运行程序WinAPI的

如何从隐藏的文件夹中运行程序WinAPI的

问题描述:

我尝试使用此代码运行程序:如何从隐藏的文件夹中运行程序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

该文件夹被隐藏不相关。这在这里没有影响。

正如在评论中所讨论的那样,您正在铸造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