STDAPI DllRegisterServer(void)
{
- // If we're on NT, add ourselves to the list of approved shell extensions.
-
- // Note that you should *NEVER* use the overload of CRegKey::SetValue with
- // 4 parameters. It lets you set a value in one call, without having to
- // call CRegKey::Open() first. However, that version of SetValue() has a
- // bug in that it requests KEY_ALL_ACCESS to the key. That will fail if the
- // user is not an administrator. (The code should request KEY_WRITE, which
- // is all that's necessary.)
-
- // Read also:
- // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/
- // platform/shell/programmersguide/shell_int/shell_int_extending/
- // extensionhandlers/shell_ext.asp
-
- DWORD dwWinVersionPacked = GetVersion();
-
- // Parse the GetVersion result
- bool is9x = ((dwWinVersionPacked & 0x80000000UL) == 1);
- DWORD dwWindowsMajorVersion = (LOBYTE(LOWORD(dwWinVersionPacked)));
- DWORD dwWindowsMinorVersion = (HIBYTE(LOWORD(dwWinVersionPacked)));
- // Win 9x does not have build numbers
- DWORD dwBuild = (is9x ? 0 : (DWORD)(HIWORD(dwWinVersionPacked)));
-
- // Special code for Windows NT 4.0 only
- if (!is9x && dwWindowsMajorVersion == 4)
- {
- CRegKeyEx reg;
- LONG lRet;
-
- lRet = reg.Open(HKEY_LOCAL_MACHINE,
- _T("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"));
-
- if (ERROR_SUCCESS != lRet)
- return E_ACCESSDENIED;
-
- lRet = reg.WriteString(_T("WinMerge_Shell Extension"),
- _T("{4E716236-AA30-4C65-B225-D68BBA81E9C2}"));
-
- if (ERROR_SUCCESS != lRet)
- return E_ACCESSDENIED;
- }
-
// registers object, typelib and all interfaces in typelib
return _Module.RegisterServer(TRUE);
}
STDAPI DllUnregisterServer(void)
{
- // If we're on NT, remove ourselves from the list of approved shell extensions.
- // Note that if we get an error along the way, I don't bail out since I want
- // to do the normal ATL unregistration stuff too.
-
- DWORD dwWinVersion = GetVersion();
- if (((dwWinVersion & 0x80000000UL) == 0) && LOWORD(dwWinVersion) == 4)
- {
- CRegKey reg;
- LONG lRet;
-
- lRet = reg.Open(HKEY_LOCAL_MACHINE,
- _T("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"),
- KEY_SET_VALUE);
-
- if (ERROR_SUCCESS == lRet)
- {
- lRet = reg.DeleteValue(_T("{4E716236-AA30-4C65-B225-D68BBA81E9C2}"));
- }
- }
-
return _Module.UnregisterServer(TRUE);
}
//\r
\r
VS_VERSION_INFO VERSIONINFO\r
- FILEVERSION 1,16,5,4\r
- PRODUCTVERSION 1,16,5,4\r
+ FILEVERSION 1,16,5,5\r
+ PRODUCTVERSION 1,16,5,5\r
FILEFLAGSMASK 0x3fL\r
#ifdef _DEBUG\r
FILEFLAGS 0x1L\r
BLOCK "040904B0"\r
BEGIN\r
VALUE "Comments", "\0"\r
- VALUE "CompanyName", "http://winmerge.org\0"\r
+ VALUE "CompanyName", "http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html\0"\r
VALUE "FileDescription", "WinMerge Shell Integration library\0"\r
- VALUE "FileVersion", "1.16.5.4\0"\r
+ VALUE "FileVersion", "1.16.5.5\0"\r
VALUE "InternalName", "ShellExtension\0"\r
VALUE "LegalCopyright", "Copyright 2003-2015\0"\r
VALUE "LegalTrademarks", "\0"\r
VALUE "OriginalFilename", "ShellExtension.DLL\0"\r
VALUE "PrivateBuild", "\0"\r
VALUE "ProductName", "WinMerge Shell Integration library\0"\r
- VALUE "ProductVersion", "1.16.5.4\0"\r
+ VALUE "ProductVersion", "1.16.5.5\0"\r
VALUE "SpecialBuild", "\0"\r
END\r
END\r