$shell = New-Object -ComObject WScript.Shell $shortcut = $shell.CreateShortcut([Environment]::GetFolderPath("Desktop") + "\MyApp.lnk") $shortcut.TargetPath = "C:\Program Files\MyApp\app.exe" $shortcut.Arguments = "--silent" $shortcut.IconLocation = "C:\Program Files\MyApp\app.exe,0" $shortcut.Save()
Create (or Update for persistent refresh) how to add app to desktop windows 11
// Simplified COM call chain CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, &pShellLink); pShellLink->SetPath(L"C:\\Program Files\\App\\app.exe"); pShellLink->SetDescription(L"Launch App"); IPersistFile* pPersistFile; pShellLink->QueryInterface(IID_IPersistFile, &pPersistFile); pPersistFile->Save(L"C:\\Users\\User\\Desktop\\App.lnk", TRUE); If OneDrive Known Folder Move is active, the desktop path redirects to C:\Users\<User>\OneDrive\Desktop . The Shell abstracts this via the CSIDL_DESKTOP (0x0000) or FOLDERID_Desktop . 3. Method 2: Programmatic Deployment (PowerShell / CMD) For IT administration, scripting is preferred. Windows 11 introduces no breaking changes to these methods. $shell = New-Object -ComObject WScript
Most robust, as it respects Shell links and special folder redirection. the desktop path redirects to C:\Users\<