55 for (
UINT iEntry = 0; iEntry < nEntries; ++iEntry)
59 flags |= pEntries[iEntry].flags;
64#define MAJOR_VER_ONLY "\x01"
146 for (
UINT iItem = 0; iItem < pEnum->
nItems; ++iItem)
150 INT cchLength = pszLengthAndClassName[0];
151 if (cchClass < cchLength)
152 cchLength = cchClass;
155 if (
StrCmpNA(szClass, &pszLengthAndClassName[1], cchLength) == 0)
172#define PRODUCT_VER_ENGLISH_US_UTF16 "\\StringFileInfo\\040904E4\\ProductVersion"
174#define PRODUCT_VER_GERMAN_UTF16 "\\StringFileInfo\\040704E4\\ProductVersion"
176#define PRODUCT_VER_ENGLISH_US_WE "\\StringFileInfo\\040904B0\\ProductVersion"
178#define PRODUCT_VER_ENGLISH_US_NEUTRAL "\\StringFileInfo\\04090000\\ProductVersion"
180#define PRODUCT_VER_SWEDISH_WE "\\StringFileInfo\\041D04B0\\ProductVersion"
201 TRACE(
"No version info\n");
207 ERR(
"E_OUTOFMEMORY\n");
252 if (!pszVersionPattern)
273 ret = (
lstrcmpiA(pszModuleVersion, &pszVersionPattern[1]) == 0);
277 PSTR pchAsterisk =
StrChrA(pszVersionPattern,
'*');
281 INT cchPrefix = (
INT)(pchAsterisk - pszVersionPattern);
283 ret = (
StrCmpNIA(pszModuleVersion, pszVersionPattern, cchPrefix) == 0);
287 ret = (
lstrcmpiA(pszModuleVersion, pszVersionPattern) == 0);
300 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ShellCompatibility\\Applications\\%s",
319 DWORD dwCompatFlags = 0;
345 if (!bValueExists || bRequiredFileExists)
370 return dwCompatFlags;
387 DWORD dwAppCompatFlags = 0;
403 return dwAppCompatFlags;
407#define SHACF_TO_INIT ( \
408 SHACF_CONTEXTMENU | \
410 SHACF_CORELINTERNETENUM | \
411 SHACF_MYCOMPUTERFIRST | \
412 SHACF_OLDREGITEMGDN | \
413 SHACF_LOADCOLUMNHANDLER | \
415 SHACF_WIN95SHLEXEC | \
416 SHACF_STAROFFICE5PRINTER | \
417 SHACF_NOVALIDATEFSIDS | \
418 SHACF_FILEOPENNEEDSEXT | \
419 SHACF_WIN95BINDTOOBJECT | \
420 SHACF_IGNOREENUMRESET | \
421 SHACF_ANSIDISPLAYNAMES | \
422 SHACF_FILEOPENBOGUSCTRLID | \
423 SHACF_FORCELFNIDLIST \
435 TRACE(
"(0x%lX)\n", dwMask);
461 if (
data.iFound >= 0)
469 return dwAppCompatFlags;
#define InterlockedExchange
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
#define RegCloseKey(hKey)
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LONG WINAPI RegEnumKeyA(HKEY hKey, DWORD dwIndex, LPSTR lpName, DWORD cbName)
INT WINAPI StrCmpNIA(LPCSTR lpszStr, LPCSTR lpszComp, INT iLen)
LPSTR WINAPI StrChrA(LPCSTR lpszStr, WORD ch)
INT WINAPI StrCmpNA(LPCSTR lpszStr, LPCSTR lpszComp, INT iLen)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
DWORD WINAPI GetProcessVersion(IN DWORD ProcessId)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
BOOL WINAPI PathRemoveFileSpecA(char *path)
char *WINAPI PathFindFileNameA(const char *path)
char *WINAPI StrDupA(const char *str)
DWORD WINAPI GetFileVersionInfoSizeA(LPCSTR filename, LPDWORD handle)
BOOL WINAPI VerQueryValueA(LPCVOID pBlock, LPCSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
BOOL WINAPI GetFileVersionInfoA(LPCSTR filename, DWORD handle, DWORD datasize, LPVOID data)
#define PRODUCT_VER_SWEDISH_WE
struct tagAPPCOMPATINFO * PAPPCOMPATINFO
static BOOL SHLWAPI_DoesModuleVersionMatch(_In_ PCSTR pszFileName, _In_opt_ PCSTR pszVersionPattern)
#define PRODUCT_VER_ENGLISH_US_WE
static WNDCOMPATINFO g_wndCompatInfo[]
#define PRODUCT_VER_ENGLISH_US_UTF16
struct tagLANGANDCODEPAGE LANGANDCODEPAGE
struct tagWNDCOMPATINFO WNDCOMPATINFO
struct tagAPPCOMPATINFO APPCOMPATINFO
static DWORD SHLWAPI_GetRegistryCompatFlags(_In_ PCSTR pszPath)
static DWORD SHLWAPI_GetMappedFlags(_In_ HKEY hKey, _In_ const FLAGMAP *pEntries, _In_ UINT nEntries)
struct tagFLAGMAP * PFLAGMAP
static APPCOMPATINFO g_appCompatInfo[]
static HRESULT SHLWAPI_GetModuleVersion(_In_ PCSTR pszFileName, _Out_ PSTR *ppszDest)
static DWORD SHLWAPI_InitAppCompat(VOID)
static BOOL CALLBACK SHLWAPI_WndCompatEnumProc(_In_ HWND hWnd, _In_ LPARAM lParam)
struct tagAPPCOMPATENUM APPCOMPATENUM
struct tagFLAGMAP FLAGMAP
DWORD WINAPI SHGetAppCompatFlags(_In_ DWORD dwMask)
#define PRODUCT_VER_ENGLISH_US_NEUTRAL
static DWORD g_dwAppCompatFlags
static FLAGMAP g_appCompatFlagMaps[]
struct tagLANGANDCODEPAGE * PLANGANDCODEPAGE
struct tagAPPCOMPATENUM * PAPPCOMPATENUM
struct tagWNDCOMPATINFO * PWNDCOMPATINFO
#define PRODUCT_VER_GERMAN_UTF16
static BOOL g_fAppCompatInitialized
DWORD WINAPI SHGetValueA(HKEY hKey, LPCSTR lpszSubKey, LPCSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
int WINAPIV wnsprintfA(LPSTR lpOut, int cchLimitIn, LPCSTR lpFmt,...)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
int WINAPI lstrlenA(LPCSTR lpString)
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
#define KEY_ENUMERATE_SUB_KEYS
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
const char int int int static __inline const char * wine_dbgstr_a(const char *s)
#define SHACF_OLDREGITEMGDN
#define SHACF_CONTEXTMENU
#define SHACF_LOADCOLUMNHANDLER
#define SHACF_FILEOPENBOGUSCTRLID
#define SHACF_WIN95DEFVIEW
#define SHACF_FILEOPENNEEDSEXT
#define SHACF_FLUSHNOWAITALWAYS
#define SHACF_FORCELFNIDLIST
#define SHACF_OLDCREATEVIEWWND
#define SHACF_STAROFFICE5PRINTER
#define SHACF_WIN95SHLEXEC
#define SHACF_NOVALIDATEFSIDS
#define SHACF_CORELINTERNETENUM
#define SHACF_MYCOMPUTERFIRST
#define SHACF_ANSIDISPLAYNAMES
#define SHACF_WIN95BINDTOOBJECT
#define SHACF_IGNOREENUMRESET
PCSTR pszLengthAndClassName
WORD WORD PSZ PSZ pszFileName
#define INVALID_FILE_ATTRIBUTES
DWORD WINAPI GetCurrentProcessId(void)
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
#define HKEY_LOCAL_MACHINE
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
BOOL WINAPI EnumWindows(_In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam)