26 #define WIN32_NO_STATUS 36 #include <wine/unicode.h> 44 #define MAX_EXTENSION_LENGTH 20 54 if (szExtension[0] ==
'.')
93 TRACE(
"%s %p\n", szExtension, szFileType);
96 if (szExtension[0] ==
'.')
125 TRACE(
"--UE;\n} %s\n", szFileType);
138 if (szVerb && *szVerb)
161 lstrcpyW(sTemp,
L"shell\\open\\command");
166 TRACE(
"default verb=open\n");
190 TRACE(
"no default verb!\n");
207 if (
HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb,
sizeof(sTempVerb)/
sizeof(sTempVerb[0])))
230 sprintf( xriid,
"CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
235 TRACE(
"%s\n",xriid );
254 *picon_idx =
atoiW(sNum);
278 *picon_idx=
atoi(sNum);
308 TRACE(
"-- not found\n");
319 TRACE(
"%s\n",szClass );
321 sprintf(sTemp,
"%s\\DefaultIcon",szClass);
330 TRACE(
"-- %s %i\n", szDest, *picon_idx);
332 TRACE(
"-- not found\n");
358 swprintf(
szName,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%s", pStr);
378 if (!
ret || !szDest[0])
432 sprintf(
szName,
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%S", pStr);
452 if (!
ret || !szDest[0])
488 TRACE(
"-- (%s)\n", szDest);
516 WCHAR wszShellFolderKey[] =
L"CLSID\\{00021400-0000-0000-C000-000000000046}\\ShellFolder";
518 TRACE(
"(pidlFolder=%p, pdwAttributes=%p)\n", pidlFolder, pdwAttributes);
523 ERR(
"should be called for simple PIDL's only!\n");
531 memcpy(&wszShellFolderKey[6], pwszCLSID, 38 *
sizeof(
WCHAR));
539 ERR(
"Cannot open key: %ls\n", wszShellFolderKey);
546 dwLen =
sizeof(
DWORD);
548 if ((lResult ==
ERROR_SUCCESS) && (dwTemp & *pdwAttributes)) {
549 LPSHELLFOLDER psfDesktop, psfFolder;
555 hr = IShellFolder_BindToObject(psfDesktop, pidlFolder,
NULL, &IID_IShellFolder,
558 hr = IShellFolder_GetAttributesOf(psfFolder, 0,
NULL, pdwAttributes);
559 IShellFolder_Release(psfFolder);
561 IShellFolder_Release(psfDesktop);
568 *pdwAttributes &= dwTemp;
574 TRACE(
"-- *pdwAttributes == 0x%08x\n", *pdwAttributes);
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
const GUID CLSID_AdminFolderShortcut
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
static const WCHAR szName[]
static BOOL HCR_RegGetIconW(HKEY hkey, LPWSTR szDest, LPCWSTR szName, DWORD len, int *picon_idx)
LSTATUS WINAPI RegQueryValueA(HKEY hkey, LPCSTR name, LPSTR data, LPLONG count)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
DWORD WINAPI ParseFieldA(LPCSTR src, DWORD nField, LPSTR dst, DWORD len) DECLSPEC_HIDDEN
#define HKEY_CURRENT_USER
BOOL HCR_GetIconW(LPCWSTR szClass, LPWSTR szDest, LPCWSTR szName, DWORD len, int *picon_idx)
int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPSTR lpBuffer, _In_ int cchBufferMax)
#define IDS_RECYCLEBIN_FOLDER_NAME
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
WINE_DEFAULT_DEBUG_CHANNEL(msi)
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
#define IDS_ADMINISTRATIVETOOLS
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define sprintf(buf, format,...)
#define MAX_EXTENSION_LENGTH
DWORD WINAPI ExpandEnvironmentStringsA(IN LPCSTR lpSrc, IN LPSTR lpDst, IN DWORD nSize)
LSTATUS WINAPI RegGetValueA(HKEY hKey, LPCSTR pszSubKey, LPCSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
BOOL HCR_RegOpenClassIDKey(REFIID riid, HKEY *hkey)
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
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 RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
IID * _ILGetGUIDPointer(LPCITEMIDLIST pidl)
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len)
BOOL HCR_MapTypeToValueW(LPCWSTR szExtension, LPWSTR szFileType, LONG len, BOOL bPrependDot)
BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot)
DWORD WINAPI ParseFieldW(LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len) DECLSPEC_HIDDEN
BOOL HCR_GetIconA(LPCSTR szClass, LPSTR szDest, LPCSTR szName, DWORD len, int *picon_idx)
DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
#define memcpy(s1, s2, n)
int _cdecl swprintf(const WCHAR *,...)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
#define shell32_hInstance
BOOL HCR_GetDefaultVerbW(HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
VOID WINAPI PathUnquoteSpacesA(LPSTR lpszPath)
void shell(int argc, const char *argv[])
static BOOL HCR_RegGetIconA(HKEY hkey, LPSTR szDest, LPCSTR szName, DWORD len, int *picon_idx)
VOID WINAPI PathUnquoteSpacesW(LPWSTR lpszPath)
BOOL HCR_GetExecuteCommandW(HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
#define HKEY_CLASSES_ROOT
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
BOOL HCR_GetFolderAttributes(LPCITEMIDLIST pidlFolder, LPDWORD pdwAttributes)
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)
#define RegCloseKey(hKey)
#define IsEqualIID(riid1, riid2)
WINE_UNICODE_INLINE int atoiW(const WCHAR *str)
BOOL HCR_GetClassNameW(REFIID riid, LPWSTR szDest, DWORD len)
HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr)