From: Luca Lorenzetto Date: Thu, 27 Apr 2017 08:34:07 +0000 (+0200) Subject: When creating explorer favorite use more specific windows functions (#5690) X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~761 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3db8d3dfb6bb23860661da2be103a9a5cc8ee6a7;p=nextcloud-desktop.git When creating explorer favorite use more specific windows functions (#5690) Fixes https://github.com/owncloud/client/issues/2719 --- diff --git a/src/libsync/utility_win.cpp b/src/libsync/utility_win.cpp index f0b56ec7d..eec0e89ac 100644 --- a/src/libsync/utility_win.cpp +++ b/src/libsync/utility_win.cpp @@ -12,24 +12,42 @@ * for more details. */ +#define _WIN32_WINNT 0x0600 +#define WINVER 0x0600 #include #include #include +#include +#include +#include +#include static const char runPathC[] = "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"; + + static void setupFavLink_private(const QString &folder) { // Windows Explorer: Place under "Favorites" (Links) - wchar_t path[MAX_PATH]; - SHGetSpecialFolderPath(0, path, CSIDL_PROFILE, FALSE); - QString profile = QDir::fromNativeSeparators(QString::fromWCharArray(path)); + + QString linkName; QDir folderDir(QDir::fromNativeSeparators(folder)); - QString linkName = profile+QLatin1String("/Links/") + folderDir.dirName() + QLatin1String(".lnk"); + + /* Use new WINAPI functions */ + PWSTR path; + + if(SHGetKnownFolderPath(FOLDERID_Links, 0, NULL, &path) == S_OK) { + QString links = QDir::fromNativeSeparators(QString::fromWCharArray(path)); + linkName = QDir(links).filePath(folderDir.dirName() + QLatin1String(".lnk")); + CoTaskMemFree(path); + } + qDebug() << Q_FUNC_INFO << " creating link from " << linkName << " to " << folder; if (!QFile::link(folder, linkName)) qDebug() << Q_FUNC_INFO << "linking" << folder << "to" << linkName << "failed!"; + } + bool hasLaunchOnStartup_private(const QString &appName) { QString runPath = QLatin1String(runPathC);