Пример #1
0
BOOL TIsVirtualizedDirV(void *path)
{
	if (!IsWinVista()) return FALSE;

	WCHAR	buf[MAX_PATH];
	DWORD	csidl[] = { CSIDL_WINDOWS, CSIDL_PROGRAM_FILES, CSIDL_PROGRAM_FILESX86,
						CSIDL_COMMON_APPDATA, 0xffffffff };

	for (int i=0; csidl[i] != 0xffffffff; i++) {
		if (TSHGetSpecialFolderPathV(NULL, buf, csidl[i], FALSE)) {
			int	len = strlenV(buf);
			if (strnicmpV(buf, path, len) == 0) {
				WCHAR	ch = GetChar(path, len);
				if (ch == 0 || ch == '\\' || ch == '/') {
					return	TRUE;
				}
			}
//			if (i == 0 && GetChar(buf, 1) == ':') { /* check system root directory */
//				if (strnicmpV(path, buf, 3) == 0 && strchrV(MakeAddr(path, 4), '\\') == NULL) {
//					return	TRUE;
//				}
//			}
		}
	}

	return	FALSE;
}
Пример #2
0
BOOL ConvertToX86Dir(void *target)
{
	WCHAR	buf[MAX_PATH];
	WCHAR	buf86[MAX_PATH];
	int		len;

	if (!TSHGetSpecialFolderPathV(NULL, buf, CSIDL_PROGRAM_FILES, FALSE)) return FALSE;
	len = strlenV(buf);
	SetChar(buf, len++, '\\');
	SetChar(buf, len, 0);

	if (strnicmpV(buf, target, len)) return FALSE;

	if (!TSHGetSpecialFolderPathV(NULL, buf86, CSIDL_PROGRAM_FILESX86, FALSE)) return FALSE;
	MakePathV(buf, buf86, MakeAddr(target, len));
	strcpyV(target, buf);

	return	 TRUE;
}