26#define WIN32_NO_STATUS
36#include <wine/unicode.h>
47#define MAX_EXTENSION_LENGTH 20
57 if (szExtension[0] ==
'.')
96 TRACE(
"%s %p\n", szExtension, szFileType);
99 if (szExtension[0] ==
'.')
128 TRACE(
"--UE;\n} %s\n", szFileType);
141 if (szVerb && *szVerb)
164 lstrcpyW(sTemp,
L"shell\\open\\command");
169 TRACE(
"default verb=open\n");
193 TRACE(
"no default verb!\n");
210 if (
HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb,
sizeof(sTempVerb)/
sizeof(sTempVerb[0])))
233 sprintf( xriid,
"CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
238 TRACE(
"%s\n",xriid );
257 *picon_idx =
atoiW(sNum);
281 *picon_idx=
atoi(sNum);
311 TRACE(
"-- not found\n");
322 TRACE(
"%s\n",szClass );
324 sprintf(sTemp,
"%s\\DefaultIcon",szClass);
333 TRACE(
"-- %s %i\n", szDest, *picon_idx);
335 TRACE(
"-- not found\n");
360 TRACE(
"-- not found\n");
371 TRACE(
"%d\n", reg_idx);
376 L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Icons",
388 TRACE(
"-- not found\n");
415 swprintf(
szName,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%s", pStr);
435 if (!
ret || !szDest[0])
489 sprintf(
szName,
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%S", pStr);
509 if (!
ret || !szDest[0])
545 TRACE(
"-- (%s)\n", szDest);
573 WCHAR wszShellFolderKey[] =
L"CLSID\\{00021400-0000-0000-C000-000000000046}\\ShellFolder";
575 TRACE(
"(pidlFolder=%p, pdwAttributes=%p)\n", pidlFolder, pdwAttributes);
580 ERR(
"should be called for simple PIDL's only!\n");
588 memcpy(&wszShellFolderKey[6], pwszCLSID, 38 *
sizeof(
WCHAR));
596 ERR(
"Cannot open key: %ls\n", wszShellFolderKey);
603 dwLen =
sizeof(
DWORD);
605 if ((lResult ==
ERROR_SUCCESS) && (dwTemp & *pdwAttributes)) {
606 LPSHELLFOLDER psfDesktop, psfFolder;
612 hr = IShellFolder_BindToObject(psfDesktop, pidlFolder,
NULL, &IID_IShellFolder,
615 hr = IShellFolder_GetAttributesOf(psfFolder, 0,
NULL, pdwAttributes);
616 IShellFolder_Release(psfFolder);
618 IShellFolder_Release(psfDesktop);
625 *pdwAttributes &= dwTemp;
631 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)
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)
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,...)
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)
BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len)
BOOL HCR_GetIconA(LPCSTR szClass, LPSTR szDest, LPCSTR szName, DWORD len, int *picon_idx)
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,...)
#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)