@@ -248,6 +248,16 @@ namespace Util {
248
248
return hr;
249
249
}
250
250
251
+ inline std::wstring parentDirectory (WCHAR* path, DWORD size) {
252
+ size_t lastSeparator = 0 ;
253
+ for (size_t i = 0 ; i < size; i++) {
254
+ if (path[i] == L' \\ ' || path[i] == L' /' ) {
255
+ lastSeparator = i;
256
+ }
257
+ }
258
+ return {path, lastSeparator};
259
+ }
260
+
251
261
inline PCWSTR AsString (_In_ ComPtr<IXmlDocument>& xmlDocument) {
252
262
HSTRING xml;
253
263
ComPtr<IXmlNodeSerializer> ser;
@@ -669,14 +679,15 @@ HRESULT WinToast::createShellLinkHelper() {
669
679
WCHAR slPath[MAX_PATH]{L' \0 ' };
670
680
Util::defaultShellLinkPath (_appName, slPath);
671
681
Util::defaultExecutablePath (exePath);
682
+ std::wstring exeDir = Util::parentDirectory (exePath, sizeof (exePath) / sizeof (exePath[0 ]));
672
683
ComPtr<IShellLinkW> shellLink;
673
684
HRESULT hr = CoCreateInstance (CLSID_ShellLink, nullptr , CLSCTX_INPROC_SERVER, IID_PPV_ARGS (&shellLink));
674
685
if (SUCCEEDED (hr)) {
675
686
hr = shellLink->SetPath (exePath);
676
687
if (SUCCEEDED (hr)) {
677
688
hr = shellLink->SetArguments (L" " );
678
689
if (SUCCEEDED (hr)) {
679
- hr = shellLink->SetWorkingDirectory (exePath );
690
+ hr = shellLink->SetWorkingDirectory (exeDir. c_str () );
680
691
if (SUCCEEDED (hr)) {
681
692
ComPtr<IPropertyStore> propertyStore;
682
693
hr = shellLink.As (&propertyStore);
0 commit comments