1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
| /* Set the default copier
\param theOrder True if ultracopier should be the default copier
\return Return empty QString if no error append */
QString setSystemCopyCatched(bool theOrder)
{
if(theOrder)
DEBUGCONSOLE(70,"setSystemCopyCatched","theOrder=true");
else
DEBUGCONSOLE(70,"setSystemCopyCatched","theOrder=false");
#if (ULTRACOPIER_MODE==ULTRACOPIER_MODE_WINDOWS)
LONG returnVar;
HKEY ultracopier_regkey;
RegCreateKeyEx(HKEY_CURRENT_USER, (LPCTSTR)"Software\\Software\\ultracopier\\inject32", 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &ultracopier_regkey, 0);
if(theOrder)
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"HandleCopy", 0, REG_SZ, (BYTE*)"1", 2);
else
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"HandleCopy", 0, REG_SZ, (BYTE*)"0", 2);
RegCloseKey(ultracopier_regkey);
if(returnVar!=ERROR_SUCCESS)
{
DEBUGCONSOLE(70,"setSystemCopyCatched","GetLastError(): "+GetLastError());
DEBUGCONSOLE(70,"setSystemCopyCatched","returnVar: "+QString::number(returnVar));
return "Could not write the HandleCopy registry key!";
}
//--------------------------------------------------------------------
QString thePathInject=QCoreApplication::applicationDirPath()+"\\inject32.dll";
RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)"SOFTWARE\\Classes\\CLSID\\{A7005AF0-D6E8-48AF-8DFA-023B1CF660A7}\\InProcServer32", 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &ultracopier_regkey, 0);
if(theOrder)
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"@", 0, REG_SZ, (BYTE*)qPrintable(thePathInject), thePathInject.length());
else
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"@", 0, REG_SZ, (BYTE*)"", 1);
RegCloseKey(ultracopier_regkey);
if(returnVar!=ERROR_SUCCESS)
{
DEBUGCONSOLE(70,"setSystemCopyCatched","GetLastError(): "+GetLastError());
DEBUGCONSOLE(70,"setSystemCopyCatched","returnVar: "+QString::number(returnVar));
return "Could not write the Classes\\CLSID registry key!";
}
//--------------------------------------------------------------------
RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)"SOFTWARE\\Classes\\CLSID\\{A7005AF0-D6E8-48AF-8DFA-023B1CF660A7}\\InProcServer32", 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &ultracopier_regkey, 0);
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"ThreadingModel", 0, REG_SZ, (BYTE*)"Apartment", 10);
RegCloseKey(ultracopier_regkey);
if(returnVar!=ERROR_SUCCESS)
{
DEBUGCONSOLE(70,"setSystemCopyCatched","GetLastError(): "+GetLastError());
DEBUGCONSOLE(70,"setSystemCopyCatched","returnVar: "+QString::number(returnVar));
return "Could not write the ThreadingModel registry key!";
}
//--------------------------------------------------------------------
RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)"SOFTWARE\\Classes\\*\\shellex\\DragDropHandlers\\inject32", 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &ultracopier_regkey, 0);
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"@", 0, REG_SZ, (BYTE*)"{A7005AF0-D6E8-48AF-8DFA-023B1CF660A7}", 39);
RegCloseKey(ultracopier_regkey);
if(returnVar!=ERROR_SUCCESS)
{
DEBUGCONSOLE(70,"setSystemCopyCatched","GetLastError(): "+GetLastError());
DEBUGCONSOLE(70,"setSystemCopyCatched","returnVar: "+QString::number(returnVar));
return "Could not write the Classes\\* registry key!";
}
//--------------------------------------------------------------------
RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)"SOFTWARE\\Classes\\Directory\\shellex\\DragDropHandlers\\inject32", 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &ultracopier_regkey, 0);
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"@", 0, REG_SZ, (BYTE*)"{A7005AF0-D6E8-48AF-8DFA-023B1CF660A7}", 39);
RegCloseKey(ultracopier_regkey);
if(returnVar!=ERROR_SUCCESS)
{
DEBUGCONSOLE(70,"setSystemCopyCatched","GetLastError(): "+GetLastError());
DEBUGCONSOLE(70,"setSystemCopyCatched","returnVar: "+QString::number(returnVar));
return "Could not write the Classes\\Directory registry key!";
}
//--------------------------------------------------------------------
RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)"SOFTWARE\\Classes\\Drive\\shellex\\DragDropHandlers\\inject32", 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &ultracopier_regkey, 0);
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"@", 0, REG_SZ, (BYTE*)"{A7005AF0-D6E8-48AF-8DFA-023B1CF660A7}", 39);
RegCloseKey(ultracopier_regkey);
if(returnVar!=ERROR_SUCCESS)
{
DEBUGCONSOLE(70,"setSystemCopyCatched","GetLastError(): "+GetLastError());
DEBUGCONSOLE(70,"setSystemCopyCatched","returnVar: "+QString::number(returnVar));
return "Could not write the Classes\\Drive registry key!";
}
//--------------------------------------------------------------------
RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)"SOFTWARE\\Classes\\Folder\\shellex\\DragDropHandlers\\inject32", 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &ultracopier_regkey, 0);
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"@", 0, REG_SZ, (BYTE*)"{A7005AF0-D6E8-48AF-8DFA-023B1CF660A7}", 39);
RegCloseKey(ultracopier_regkey);
if(returnVar!=ERROR_SUCCESS)
{
DEBUGCONSOLE(70,"setSystemCopyCatched","GetLastError(): "+GetLastError());
DEBUGCONSOLE(70,"setSystemCopyCatched","returnVar: "+QString::number(returnVar));
return "Could not write the Classes\\Folder registry key!";
}
//--------------------------------------------------------------------
RegCreateKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved", 0, 0, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, 0, &ultracopier_regkey, 0);
returnVar=RegSetValueEx(ultracopier_regkey, (LPCTSTR)"{A7005AF0-D6E8-48AF-8DFA-023B1CF660A7}", 0, REG_SZ, (BYTE*)"inject32", 9);
RegCloseKey(ultracopier_regkey);
if(returnVar!=ERROR_SUCCESS)
{
DEBUGCONSOLE(70,"setSystemCopyCatched","GetLastError(): "+GetLastError());
DEBUGCONSOLE(70,"setSystemCopyCatched","returnVar: "+QString::number(returnVar));
return "Could not write the Shell Extensions\\Approved registry key!";
}
//--------------------------------------------------------------------
return "";
#else
theOrder=theOrder;
return "Not implemented for this system";
#endif
} |
Partager