1. Joined : Aug 2016
    Posts : 40
    windows 10
       08 Sep 2016 #1

    Editing The Start Menu Apps


    Just a quick solution here rather than a question!

    I have a number of small system apps that don't have an install, so normally I would just create folders and menus in the Start Menu Apps folder -

    C:\ProgramData\Microsoft\Windows\Start Menu\Programs

    But Windows 10 won't allow you to create shortcuts in that folder any more. I have no idea why. Microsoft being dictatorial again, I suppose, but luckily the the solution is really simple. It will allow you to "copy" shortcuts, so you need to create your shortcuts on the desktop and then just copy them in one by one.
      My System SpecsSystem Spec


  2. Joined : Jul 2016
    Gdynia, Poland
    Posts : 9
    Windows 10
       08 Sep 2016 #2

    Dear davefaz

    davefaz said: View Post
    Just a quick solution here rather than a question!

    I have a number of small system apps that don't have an install, so normally I would just create folders and menus in the Start Menu Apps folder -

    C:\ProgramData\Microsoft\Windows\Start Menu\Programs

    But Windows 10 won't allow you to create shortcuts in that folder any more. I have no idea why. Microsoft being dictatorial again, I suppose, but luckily the the solution is really simple. It will allow you to "copy" shortcuts, so you need to create your shortcuts on the desktop and then just copy them in one by one.
    Just add your User and give him permissions to C:\ProgramData\Microsoft\Windows\Start Menu\Programs via Right Click on folder Programs, then Properties and choose Security tab and add there your User with Full Control at Allow tab.

    Sincerely
      My System SpecsSystem Spec

  3.    08 Sep 2016 #3

    davefaz said: View Post
    Windows 10 won't allow you to create shortcuts in that folder any more. .
    Absolutely not true. You definitely can make shortcuts in that folder. Have a look below for some examples.

    Every clean install of Windows 10 I run this PoSh script which creates shortcuts in that folder and set the "run as administrator" flag as required on the shortcuts I want.

    If you think you can't make shortcuts in Windows 10 then you are simply wrong.

    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")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
    	}
    }
    
    )	
    $options = @($i=0;$#----------------------------------------------------------------
    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') {
                    c
                } 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"


    Perhaps that script is a bit long winded so here you are - a simple Powershell example:
    Code:
    $WshShell=New-Object -ComObject WScript.Shell
    $Shortcut=$WshShell.CreateShortcut("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\WhatEverYouWant.lnk")
    $Shortcut.Targetpath= "C:\Windows\wordpad.exe"
    $Shortcut.Save()

    With that you will find searching for "WhatEverYourWant" opens "wordpad.exe". It can be quite useful if you tweek it (especially the first box) as Windows search doesn't find all .exe any more since Windows 8.1. That is an irritating change that MS don't want to revert though.
    Last edited by lx07; 08 Sep 2016 at 06:36. Reason: A simpler example
      My System SpecsSystem Spec


 


Similar Threads
Thread Forum
Antivirus / Windows 10 / Start Menu, Metro Apps, Context menu issues
Hi I wondered if anyone out there has had a similar experience to me... For some weeks now I have had problems where the START MENU wouldn't launch, metro apps (OneDrive, Tweetium, Money, News etc) would fail to launch (just a blank window...
AntiVirus, Firewalls and System Security
Not able to search executables or pinned Start apps from Start menu
I'm running the RTM on a netbook and have noticed that, unlike in Windows 7/8/8.1, I'm no longer able to hit Start and type in an executable. I have a bunch of portable apps that I typically type in and pull up. Now, the Start menu search pulls up...
General Support
Windows 10 start menu/notification menu/metro apps not opening anymore
I am using Windows 10 for around 2 days now. But today my computer freezed while playing a game, so i restarted my computer and when i logged in, the start menu,notification menu and metro apps would not open anymore. Whats is happening?
General Support
Start menu, search and other apps won't start from task bar
Hello, I have just upgraded from Win 7 Ultimate to Win 10 build 10240 The sart menu button does not activate anything, search doesn't either, Notification bubble does not open anything either. Safe mode produces same behaviour, I have...
General Support
Editing Start Menu
In all versions of Windows in the past, I have been able to edit and arrange program shortcuts and folders on the start menu. In Windows 10, I can open the folders containing the start menu items and make the desired changes, deletes, etc... but...
General Support
Our Sites
Site Links
About Us
Windows 10 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 10" and related materials are trademarks of Microsoft Corp.

Designer Media Ltd

All times are GMT -5. The time now is 01:20.
Find Us
Twitter Facebook Google+



Windows 10 Forums