New
#11
Press type the name of your portable program and see if you can find it.
I think you will find you can not.
Perhaps.
What you can do is stick a shortcut in the start menu. That is what I do.
Imagine you have all your portable programs stored in one place you can just write the lot with a loop and it will at a shortcut for every .exe it finds.
Like this for example...Still a bit boring to do it though.Code:# Shortcuts will be created in $ShortcutRoot for programs found in $ExeRoot (except for $Exclusions) $ExeRoot="C:\Users\Hali\OneDrive\Programs\" $ShortcutRoot=$Home + "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\" $Exclusions = @("gdisk64","nvspbind","StartKiller","UnlockerInject32") $PoShExeRoot="C:\Users\Hali\OneDrive\Programs\Powershell Scripts\" $PoShShortcutRoot=$Home + "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Powershell Scripts\" $PoShExclusions = @("Sleep Mac Transmission","Wake Mac Transmission","WakeTransmission") $SysinternalsExeRoot="C:\Users\Hali\OneDrive\Programs\SysinternalsSuite\" $SysinternalsShortcutRoot=$Home + "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\SysinternalsSuite\" $SysinternalsExclusions = @( "accesschk","autorunsc","adrestore","Clockres","Contig","CoreInfo","ctrl2cap","diskext","du","efsdump","FindLinks","handle","hex2dec","junction","ldmdump","listdlls", "livekd","logonsessions","movefile","ntfsinfo","pendmoves","pipelist","procdump","PsExec","psfile","PsGetSid","PsInfo","pskill","pslist","PsLoggedon","psloglist","pspasswd", "psping","PsService","psshutdown","pssuspend","RegDelNull","regjump","RootkitRevealer","ru","sdelete","sigcheck","streams","strings","sysmon","sync","VolumeID","Whois") #---------------------------------------------------------------- # Check set-up #---------------------------------------------------------------- Write-Host "Shortcuts will be created in " -NoNewline; Write-Host $ShortcutRoot -f White Write-Host "for programs found in " -NoNewline; Write-Host $ExeRoot -NoNewline -f White; Write-Host " and " -NoNewline; Write-Host $SysinternalsExeRoot -f White $title="Keep folder structure for shortcuts?" $message="Enter choice" $choices = @( @("Yes", "Keep existing structure"), @("No", "Create Shortcuts in root directory"), @("Exit","Exit") ) $options = @($i=0;$choices | %{New-Object System.Management.Automation.Host.ChoiceDescription "&$i`b$($_[0])", $_[1]; $i++}) $result = $host.ui.PromptForChoice($title, $message, $options, 1) $choice = $choices[$result][0] Switch ($result) { 0 {$Consolidate=$False} 1 {$Consolidate=$True} 2 {exit} } #---------------------------------------------------------------- Function Set-Admin #---------------------------------------------------------------- # Set the Run As Administrator flag ($file) { if (-not (Test-Path $file)) { Write-Host "File not found " -NoNewline -f red; Write-Host "$file" -f red } else { $bytes = [System.IO.File]::ReadAllBytes($file) $bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON (Use –bor to set RunAsAdministrator option and –bxor to unset) [System.IO.File]::WriteAllBytes($file, $bytes) Write-Host "Administrator authority granted " -NoNewline -f green; Write-Host "$file" -f White } } #---------------------------------------------------------------- Function Create-Shortcuts #--------------------------------------------------------------- # Create shortcuts for all non-excluded .exe ($ExeRoot,$ShortcutRoot,$Exclusions,$Consolidate,$Recurse) { # Get all program objects if ($Recurse) {$Apps=Get-ChildItem -path $ExeRoot -include @("*.exe","*.ps1") -recurse} else {$Apps=Get-ChildItem -path "$ExeRoot*" -include @("*.exe","*.ps1")} Foreach ($App in $Apps) { $ShortcutName=[io.path]::GetFileNameWithoutExtension($App.FullName)+'.lnk' $IconPath=(Split-Path $App.FullName -parent)+"\"+[io.path]::GetFileNameWithoutExtension($App.FullName)+'.ico' if ($consolidate) { $ShortcutPath=$ShortcutRoot+$ShortcutName } else { $ShortcutPath=([io.path]::ChangeExtension($ShortcutRoot + $App.FullName.SubString($ExeRoot.Length), '.lnk')) } if (Test-Path $ShortcutPath) { Write-Host "Shortcut exists " -NoNewline -f cyan; Write-Host "$ShortcutPath" -f white } elseif ($Exclusions -contains $App.BaseName) { Write-Host " excluded " -NoNewline -f red; Write-Host "$App" -f red } else { # Create directory if required $ShortcutDirectory = Split-Path $ShortcutPath -parent if (-not (Test-Path $ShortcutDirectory )) { New-Item -ItemType Directory -Path $ShortcutDirectory -Force } # Create Shortcut $WshShell=New-Object -ComObject WScript.Shell $Shortcut=$WshShell.CreateShortcut($ShortcutPath) If([io.path]::GetExtension($App.FullName) -eq '.exe') { $Shortcut.TargetPath = $App.FullName } Else { $Shortcut.TargetPath ='%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe' $Shortcut.Arguments = '-ExecutionPolicy Bypass -File "'+$App.FullName+'"' } if (Test-Path $IconPath) {$Shortcut.IconLocation = $IconPath} $Shortcut.WorkingDirectory = Split-Path $App.FullName -parent $Shortcut.Save() Write-Host "Shortcut created " -NoNewline -f green; Write-Host $ShortcutPath -f White # Make Powershell shortcuts run as administrator If([io.path]::GetExtension($App.FullName) -eq '.ps1') {Set-Admin $ShortcutPath} } } } Write-Host "EXEs Processed" -f Yellow; Write-Host #---------------------------------------------------------------- # Sysinternals Programs #---------------------------------------------------------------- Create-Shortcuts $SysinternalsExeRoot $SysinternalsShortcutRoot $SysinternalsExclusions $True $False # sync.exe (want to add icon) $WshShell=New-Object -ComObject WScript.Shell $Shortcut=$WshShell.CreateShortcut("$SysinternalsShortcutRoot\sync.lnk") $Shortcut.TargetPath = "$SysinternalsExeRoot\sync.exe" $Shortcut.WorkingDirectory = "$SysinternalsExeRoot" $Shortcut.IconLocation = "%SystemRoot%\system32\shell32.dll,217" # (54 accross *4 deep + 1 down = 217 in the dll) $Shortcut.Save() Write-Host "Shortcut created " -NoNewline -f green; Write-Host $SysinternalsShortcutRoot"sync.lnk" -f White # Set various shortcuts to run as Admin Set-Admin "$SysinternalsShortcutRoot`Autoruns.lnk" Set-Admin "$SysinternalsShortcutRoot`procexp.lnk" Set-Admin "$SysinternalsShortcutRoot`Procmon.lnk" Set-Admin "$SysinternalsShortcutRoot`sync.lnk" #---------------------------------------------------------------- # Powershell scripts #---------------------------------------------------------------- Create-Shortcuts $PoShExeRoot $PoShShortcutRoot $PoShExclusions $True $True #---------------------------------------------------------------- # Other Programs #---------------------------------------------------------------- # Get Programs in root Create-Shortcuts $ExeRoot $ShortcutRoot $Exclusions $True $False # Get programs in sub-directories (except Sysinternals) $OtherDirs = Get-ChildItem -path $ExeRoot -dir -exclude "SysinternalsSuite","Powershell Scripts" $SavedShortcutRoot=$ShortcutRoot $SavedExeRoot=$ExeRoot Foreach ($OtherDir in $OtherDirs) { $ExeRoot=$OtherDir.FullName+"\" if (-not $Consolidate) { $ShortcutRoot=$SavedShortcutRoot+$OtherDir.Name+"\" } Create-Shortcuts $ExeRoot $ShortcutRoot $Exclusions $Consolidate $True } $ShortcutRoot=$SavedShortcutRoot $ExeRoot=$SavedExeRoot # Set various shortcuts to run as Admin Set-Admin "$ShortcutRoot`windirstat.lnk" Set-Admin "$ShortcutRoot`TreeSizeFree.lnk" #---------------------------------------------------------------- # Other Shortcuts #---------------------------------------------------------------- $WshShell = New-Object -ComObject WScript.Shell $Shortcut=$WshShell.CreateShortcut("$ShortcutRoot\God Mode.lnk") $Shortcut.TargetPath = $Shortcut.TargetPath = "$env:systemroot\explorer.exe" $Shortcut.Arguments = "shell:::{ED7BA470-8E54-465E-825C-99712043E01C}" $Shortcut.Save() Write-Host "Shortcut created " -NoNewline -f green; Write-Host $ShortcutRoot"God Mode.lnk" -f White if (-not(Test-Path "$ShortcutRoot\TN5250")) {New-Item -ItemType Directory -Path "$ShortcutRoot\TN5250" -Force} Copy-Item $ExeRoot\TN5250\PUB1.lnk $ShortcutRoot\TN5250\ Copy-Item $ExeRoot\TN5250\SIASDEV.lnk $ShortcutRoot\TN5250\ Move-Item $ShortcutRoot\TN5250.lnk $ShortcutRoot\TN5250\ #---------------------------------------------------------------- # Rename any odd named #---------------------------------------------------------------- if (Test-Path "$ShortcutRoot\TFC.lnk") {Rename-Item "$ShortcutRoot\TFC.lnk" "$ShortcutRoot\Temp File Cleaner.lnk"} if (Test-Path "$ShortcutRoot\Rapr.lnk") {Rename-Item "$ShortcutRoot\Rapr.lnk" "$ShortcutRoot\Driver Store Explorer.lnk"} Write-Host Read-Host -Prompt "Press Enter to exit"
That would work - it is the same. You can just right click on each .exe and then it will make a shortcut on your desktop. You can then copy it to C:\Users\<whatever your name is>\Appdata\Roaming\Microsoft\Windows\Start Menu\Programs\
I've no idea why you think I personally or anyone else should have a clue about why it works this way (or why it isn't fixed) astenforums.com isn't a Microsoft affiliated site
Anyway I've been moaning about this bug to MS, including reporting it to their feedback app, since October 2014 and got no response but this does work as a temporary (or perhaps permanent) workaround..
Oh I didn't mean it that way that you guys should know the cause. I was referring with "you" as to us people in general having random Windows issues that don't seem to make any sense (i.e. the cause is unknown). I find it weird that we have such issues.
I'm having this doubt for a long time that MS is paying attention to all those feedback comments and is really trying to fix all of them. I guess only time will tell.