fuhao software.

一直被误导,从未被斧正

PathFileExists检查文件是否存在

假设有以下代码:

	TCHAR achKeepaliveServicePath[MAX_PATH] = { 0 };
	GetModuleFileName( NULL,
		achKeepaliveServicePath,
		_countof( achKeepaliveServicePath ) );
	PathRemoveFileSpec( achKeepaliveServicePath );
	PathCombine( achKeepaliveServicePath, 
		achKeepaliveServicePath,
		_T( "CaptureServerKeepAlive.exe" ) );
	PathQuoteSpaces( achKeepaliveServicePath );
	LPCTSTR lpSubKey = _T( "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" );
	if( PathFileExists( achKeepaliveServicePath ) ){
		// 如果achKeepaliveServicePath被双绰号括起,PathFileExists后err,hr为 ERROR_INVALID_NAME : 文件名、目录名或卷标语法不正确。 
		lpSubKey = _T( "SOFTWARE\\KeepaliveProcessService" );
	}


被标记成红色的函数表示如果achKeepaliveServicePath所描述的路径中有空格则使用双引号括起路径,这是PathFileExists发生错误的根源所在。


MSDN并没说明PathFileExists检测的路径中不允许使用双引号括起(PathFileExists不是Shell函数……);


MSDN链接:

https://msdn.microsoft.com/en-us/library/windows/desktop/bb773584(v=vs.85).aspx

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/passFuHao/article/details/49925993
文章标签: windows api bug
个人分类: Widnows API
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭