26#define WIN32_NO_STATUS
36#include <wine/unicode.h>
47#define MAX_EXTENSION_LENGTH 20
60 if (szExtension[0] !=
'.')
90 if (szExtension[0] ==
'.')
121 TRACE(
"%s %p\n", szExtension, szFileType);
124 if (szExtension[0] ==
'.')
145 TRACE(
"--UE;\n} %s\n", szFileType);
160 if (szVerb && *szVerb)
190 lstrcpyW(sTemp,
L"shell\\open\\command");
196 TRACE(
"default verb=open\n");
220 TRACE(
"no default verb!\n");
237 if (
HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb,
sizeof(sTempVerb)/
sizeof(sTempVerb[0])))
260 sprintf( xriid,
"CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
265 TRACE(
"%s\n",xriid );
284 *picon_idx =
atoiW(sNum);
308 *picon_idx=
atoi(sNum);
338 TRACE(
"-- not found\n");
349 TRACE(
"%s\n",szClass );
351 sprintf(sTemp,
"%s\\DefaultIcon",szClass);
360 TRACE(
"-- %s %i\n", szDest, *picon_idx);
362 TRACE(
"-- not found\n");
387 TRACE(
"-- not found\n");
398 TRACE(
"%d\n", reg_idx);
403 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Icons",
415 TRACE(
"-- not found\n");
442 swprintf(
szName,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%s", pStr);
462 if (!
ret || !szDest[0])
516 sprintf(
szName,
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%S", pStr);
536 if (!
ret || !szDest[0])
572 TRACE(
"-- (%s)\n", szDest);
600 WCHAR wszShellFolderKey[] =
L"CLSID\\{00021400-0000-0000-C000-000000000046}\\ShellFolder";
602 TRACE(
"(pidlFolder=%p, pdwAttributes=%p)\n", pidlFolder, pdwAttributes);
607 ERR(
"should be called for simple PIDL's only!\n");
615 memcpy(&wszShellFolderKey[6], pwszCLSID, 38 *
sizeof(
WCHAR));
623 ERR(
"Cannot open key: %ls\n", wszShellFolderKey);
630 dwLen =
sizeof(
DWORD);
632 if ((lResult ==
ERROR_SUCCESS) && (dwTemp & *pdwAttributes)) {
633 LPSHELLFOLDER psfDesktop, psfFolder;
639 hr = IShellFolder_BindToObject(psfDesktop, pidlFolder,
NULL, &IID_IShellFolder,
642 hr = IShellFolder_GetAttributesOf(psfFolder, 0,
NULL, pdwAttributes);
643 IShellFolder_Release(psfFolder);
645 IShellFolder_Release(psfDesktop);
652 *pdwAttributes &= dwTemp;
658 TRACE(
"-- *pdwAttributes == 0x%08x\n", *pdwAttributes);
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define shell32_hInstance
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
#define RegCloseKey(hKey)
LONG RegLoadMUIStringW(IN HKEY hKey, IN LPCWSTR pszValue OPTIONAL, OUT LPWSTR pszOutBuf, IN DWORD cbOutBuf, OUT LPDWORD pcbData OPTIONAL, IN DWORD Flags, IN LPCWSTR pszDirectory OPTIONAL)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
LSTATUS WINAPI RegQueryValueA(HKEY hkey, LPCSTR name, LPSTR data, LPLONG count)
LSTATUS WINAPI RegGetValueA(HKEY hKey, LPCSTR pszSubKey, LPCSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
LONG WINAPI RegLoadMUIStringA(IN HKEY hKey, IN LPCSTR pszValue OPTIONAL, OUT LPSTR pszOutBuf, IN DWORD cbOutBuf, OUT LPDWORD pcbData OPTIONAL, IN DWORD Flags, IN LPCSTR pszDirectory OPTIONAL)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
HRESULT WINAPI StringFromCLSID(REFCLSID clsid, LPOLESTR *str)
void WINAPI CoTaskMemFree(void *ptr)
static const WCHAR *const ext[]
DWORD WINAPI ExpandEnvironmentStringsA(IN LPCSTR lpSrc, IN LPSTR lpDst, IN DWORD nSize)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
void WINAPI PathUnquoteSpacesW(WCHAR *path)
void WINAPI PathUnquoteSpacesA(char *path)
INT WINAPI DECLSPEC_HOTPATCH LoadStringA(HINSTANCE instance, UINT resource_id, LPSTR buffer, INT buflen)
_ACRTIMP int __cdecl atoi(const char *)
DWORD WINAPI SHGetValueW(HKEY hkey, const WCHAR *subkey, const WCHAR *value, DWORD *type, void *data, DWORD *data_len)
const GUID CLSID_AdminFolderShortcut
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
IID * _ILGetGUIDPointer(LPCITEMIDLIST pidl)
static const WCHAR szName[]
#define IsEqualIID(riid1, riid2)
BOOL HCR_GetClassNameW(REFIID riid, LPWSTR szDest, DWORD len)
BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot)
BOOL HCR_GetFolderAttributes(LPCITEMIDLIST pidlFolder, LPDWORD pdwAttributes)
static BOOL HCR_RegGetIconW(HKEY hkey, LPWSTR szDest, LPCWSTR szName, DWORD len, int *picon_idx)
BOOL HCR_GetIconW(LPCWSTR szClass, LPWSTR szDest, LPCWSTR szName, DWORD len, int *picon_idx)
static BOOL HCR_RegGetIconA(HKEY hkey, LPSTR szDest, LPCSTR szName, DWORD len, int *picon_idx)
#define MAX_EXTENSION_LENGTH
BOOL HCR_GetDefaultVerbW(HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
BOOL HCR_GetExecuteCommandW(HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
BOOL HCR_MapTypeToValueW(LPCWSTR szExtension, LPWSTR szFileType, LONG len, BOOL bPrependDot)
BOOL HCR_RegOpenClassIDKey(REFIID riid, HKEY *hkey)
EXTERN_C HRESULT SHELL32_EnumDefaultVerbList(LPCWSTR List, UINT Index, LPWSTR Verb, SIZE_T cchMax)
static LONG GetRegString(HKEY hKey, PCWSTR SubKey, PCWSTR Name, PWSTR Buffer, UINT cchBuf)
BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len)
BOOL HCR_GetIconA(LPCSTR szClass, LPSTR szDest, LPCSTR szName, DWORD len, int *picon_idx)
HRESULT HCR_GetProgIdKeyOfExtension(PCWSTR szExtension, PHKEY phKey, BOOL AllowFallback)
DWORD WINAPI ParseFieldA(LPCSTR src, DWORD nField, LPSTR dst, DWORD len) DECLSPEC_HIDDEN
DWORD WINAPI ParseFieldW(LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len) DECLSPEC_HIDDEN
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
#define IDS_ADMINISTRATIVETOOLS
#define IDS_RECYCLEBIN_FOLDER_NAME
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFCMRESLIST List
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define HKEY_CLASSES_ROOT