26#define WIN32_NO_STATUS
36#include <wine/unicode.h>
47#define MAX_EXTENSION_LENGTH 20
51 DWORD cb =
sizeof(*Buffer) * cchBuf;
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)
187 lstrcpyW(sTemp,
L"shell\\open\\command");
192 TRACE(
"default verb=open\n");
216 TRACE(
"no default verb!\n");
233 if (
HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb,
sizeof(sTempVerb)/
sizeof(sTempVerb[0])))
256 sprintf( xriid,
"CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
261 TRACE(
"%s\n",xriid );
280 *picon_idx =
atoiW(sNum);
304 *picon_idx=
atoi(sNum);
334 TRACE(
"-- not found\n");
345 TRACE(
"%s\n",szClass );
347 sprintf(sTemp,
"%s\\DefaultIcon",szClass);
356 TRACE(
"-- %s %i\n", szDest, *picon_idx);
358 TRACE(
"-- not found\n");
383 TRACE(
"-- not found\n");
394 TRACE(
"%d\n", reg_idx);
399 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Icons",
411 TRACE(
"-- not found\n");
438 swprintf(
szName,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%s", pStr);
458 if (!
ret || !szDest[0])
512 sprintf(
szName,
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%S", pStr);
532 if (!
ret || !szDest[0])
568 TRACE(
"-- (%s)\n", szDest);
596 WCHAR wszShellFolderKey[] =
L"CLSID\\{00021400-0000-0000-C000-000000000046}\\ShellFolder";
598 TRACE(
"(pidlFolder=%p, pdwAttributes=%p)\n", pidlFolder, pdwAttributes);
603 ERR(
"should be called for simple PIDL's only!\n");
611 memcpy(&wszShellFolderKey[6], pwszCLSID, 38 *
sizeof(
WCHAR));
619 ERR(
"Cannot open key: %ls\n", wszShellFolderKey);
626 dwLen =
sizeof(
DWORD);
628 if ((lResult ==
ERROR_SUCCESS) && (dwTemp & *pdwAttributes)) {
629 LPSHELLFOLDER psfDesktop, psfFolder;
635 hr = IShellFolder_BindToObject(psfDesktop, pidlFolder,
NULL, &IID_IShellFolder,
638 hr = IShellFolder_GetAttributesOf(psfFolder, 0,
NULL, pdwAttributes);
639 IShellFolder_Release(psfFolder);
641 IShellFolder_Release(psfDesktop);
648 *pdwAttributes &= dwTemp;
654 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)
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
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)
HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr)
const GUID CLSID_AdminFolderShortcut
VOID WINAPI PathUnquoteSpacesA(LPSTR lpszPath)
VOID WINAPI PathUnquoteSpacesW(LPWSTR lpszPath)
DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
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
VOID WINAPI CoTaskMemFree(LPVOID ptr)
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
#define sprintf(buf, format,...)
static HMODULE MODULEINFO DWORD cb
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
#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
#define HRESULT_FROM_WIN32(x)
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define HKEY_CLASSES_ROOT
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPSTR lpBuffer, _In_ int cchBufferMax)