Windows 11 22H2 introduced new touch-optimized taskbar for devices with
touch screen.
It seems that in this mode taskbar window size is bigger than actual
taskbar on screen. There is region defined for the window that covers
actually displayed portion of the window.
We should account for that region (if present) when obtaining taskbar
window dimensions.
More info about how to enable/disable touch taskbar:
https://www.elevenforum.com/t/turn-on-or-off-tablet-optimized-taskbar-in-windows-11.5133/
It may happen that during `InitStartMenuDLL` execution some component
posts a message that is then intercepted by (still active) `HookInject`
that will call `InitStartMenuDLL` again (and everything will repeat).
To prevent such endless recursion during initialization, we will make
sure that `InitStartMenuDLL` will be executed just once.
The setting was improperly named and evoked that custom button should be
"moved" to the corner of screen even for center aligned taskbar on Windows 11.
What the setting does (and always did) is to align button to the edge of
taskbar (e.g. bottom edge in case of bottom taskbar) instead of centering it.
Hopefully it will be now more clear.
Commit be8568c that introduced option to disable "See more results" also
changed behavior of "Searching..." item that indicates search in progress.
We will now make sure that the search progress indicator is displayed
always. No matter of options.
Menu offsets were previously applied to s_MainMenuLimits.
Though when deciding where to put start menu (CalculateCorner) we are
now taking into account also position of start button (as since Win11 it
may not be in corner of the screen).
This broke negative menu offsets.
We will fix it by applying menu offsets in CalculateCorner as a last
step once we have determined start menu position.
This should make even more sense than previous approach.
Shift Aero button slightly when it is positioned in corner of any
monitor (not just primary one).
Moreover this shift should be done only for top/bottom taskbar.
Original fix introduced in 528d15 was not correct.
The problem is that `SystemParametersInfo` uses DPI that current session
started with.
We should use `SystemParametersInfoForDpi` (available since Win10 1607)
that returns properly scaled font size.
Fixes#1110
If skin doesn't specify font to be used (such as `Classic Skin`) we will
use default system font (used for menus).
But we didn't scale the font size according to DPI.
This commit will fix that.
Fixes#1110
Windows 11 Insider builds started to register global shell hotkey for
Win key (and Ctrl+Esc) that are used to trigger start menu.
The problem is that it is not (easily) possible to intercept messages
about these hotkeys.
Thus we will unregister them during init and install hook that will
prevent their further registration.
Fixes#1165
Windows updates are applied on shutdown/reboot no matter of flags used
in ExitWindowsEx (or InitiateShutdown).
Windows start menu shutdown code handles updates in special way.
If there are updates prepared and shutdown/reboot is selected it will
use `UpdateSessionOrchestrator` object to dismiss updates and carry out
the command.
We will now do similar thing.
Fixes#1250
Shutdown privilege can be removed from users (in Local Security Policy settings).
This will remove it also from limited admin.
Thus admin will be unable to shutdown machine (because Explorer runs as
limited admin by default).
In such case we will attempt to do silent elevation and proceed with
shutdown using `SystemSettingsAdminFlows.exe` helper.
Fixes#1015
Windows start menu uses it that way too.
ExitWindowsEx is also annotated as legacy API in SDK.
We will also put shutdown handling into separate function, so that we
have it handled at one place (will make further changes easier).
Standard API for sleep (`SetSuspendState`) seems to do nothing on
systems with connected standby.
Windows start menu calls `NtPowerInformation(ScreenOff)` on such systems instead.
This is implemented in `shutdownux!ShutdownViewModel::_InitiatePowerTransition` function.
Fixes#719
With the option enabled keyboard accelerators will be triggered only if Alt key
is pressed as well.
This is how typical Windows keyboard accelerators work, to avoid
confusion with regular key presses.
Fixes#117
It will control whether keyboard accelerators are used in start menu.
Disabling it can be helpful for people that tend to hit some accelerator by mistake.
Fixes#447
Start menu window was activated early in the process of its creation.
This means it was receiving input before focus was set to search bar.
And that may have lead to unwanted use of keyboard accelerators.
We need to make sure that window is activated (receives input) only once
focus was set to search box.
Fixes#1068
Windows started to add newer version of settings to settings description
file. These have the same description as older settings, but use
different parameters.
Unfortunately old settings are still present.
This causes our modern settings folder to contain duplicates.
And also we tend to use older setting definitions that no longer work
properly.
Thus we will de-duplicate parsed settings and try to keep newer ones
(that should work better).
New settings tend to have numeric suffix, so we will keep those with
biggest suffix.
Fixes#1031
Defender settings on Win11 use indirect strings in form:
`@{Microsoft.SecHealthUI_8wekyb3d8bbwe?ms-resource://Microsoft.SecHealthUI/Resources/DisplayName}`
`SHLoadIndirectString` is unable to load such indirect string, because it expects full
package name (instead of package family name).
In such case we will convert package family name to full name and try again.
- Taskbar is now handled by taskbar.dll, so we need to hook APIs there
- TaskList window (MSTaskListWClass) is not visible so we need to
hook messages of its parent TaskBand window (MSTaskSwWClass)
Fixes#1230
This changes default value of `Show next to taskbar (when the taskbar is vertical)` setting to `enabled`.
It makes more sense to have menu next to vertical taskbar than to
overlap it (and hide taskbar buttons).
Windows start menu does it like that too.
- New help style
- Grammar fixes/slight reformatting
- Windows 8 -> 8+
- Links now go to Github or Classic shell mirror
- Updated Readme and EULA style to match
Fixes#1173, #880
This adds the new artwork for the main icon and installer screens.
Addresses #31.
Update classic button thumbnail
Improve setup banner icon
Fix web.ico size
New installer art
Fix dialog2
It is not a program that user will use explicitly.
No need to show it in the list even if Windows tracks it as frequent
program for some reason.
Fixes#1164
When taskbar is hidden its window is moved off the screen (except for
few pixels at border). It may happen that the taskbar window actually
spans to another monitor (though still not visible).
MonitorFromWindow API may thus return different monitor handle than the
one visible taskbar is on.
We will use GetTaskbarPosition function that correctly identifies taskbar's
monitor by checking rectangle of visible taskbar.
Fixes#908
- handling of `Taskbar alignment` setting (left/center)
- start menu position is based on position of start button
- mouse clicks to original button now work properly (without triggering original menu)
- custom button is properly positioned
- Win+X works properly
Debug StartMenuDLL used to not find skins when put to Open-Shell
installation folder.
Now it will try to look for skins in default location (Skins folder in
the same folder as DLL) and use alternative (Skins folder one level up)
if not present.
We are storing color settings in BBGGRR format (for historical reasons).
This may be confusing for people that are used to (more widely used) RRGGBB format.
Thus we will present color settings in RRGGBB format when editing.
We will still use BBGGRR format for those settings internally. To
maintain backward compatibility with existing settings stored in
registry/xml.
Also setting descriptions now contain hint about expected color format.
This way it should be more clear what values `Open-Shell` expects.
Fixes#82, #1141.
x64 version of pdbstr doesn't work (because of missing __CxxFrameHandler4 on Windows Server 2019).
Fortunately it seems that x86 version works well, so we can use that one.
We are now deploying official builds from master to Github releases page
(as Prerelease).
So we should get these build from there.
This is also related to AppVeyor's rather tight download limits that
make it quite challenge to obtain nightly builds.
- Updated "release" badge to point to latest release version directly
- Removed "Latest nightly build" link as nightly builds are now part of standard Releases page
Items can be pinned to directories that require administative privileges
(such as Open-Shell's default installation directory), so long as users
take ownership of the pinned folder. Also adds a command to Open-Shell's
context menu that opens the current pinned folder.
Adds general support for directory-based settings by creating a new
setting type called TYPE_DIRECTORY which uses a new bool added to
BrowseLinkHelper, called bFoldersOnly. START_MENU_PINNED_ROOT
has been removed, and all instances of both it and BrowseLinkHelper
have been adjusted accordingly. To create your own directory-based
settings, use CSetting::TYPE_DIRECTORY. Empty directory paths are
reset to their default value as they can cause unexpected behavior.
Adds a new function called GetFakeFolder which attempts to find and get
the target.lnk file from a fake folder (what Open-Shell uses to pin
folders). If detected, InvokeCommand is swapped for a ShellExecute call
to the target shortcut. Fixes#555, #653, and by extension, #691.
Expands the "display as a list of drives" option from This PC to work on
almost any item in the Windows 7 style. Incompatible items have a new
setting called ITEM_NODRIVES which blocks the option from appearing.
This PC still uses the original "list of drives" text, while other items
use "list of links" instead. Sorting has been updated to account for
this option by adding a property called bFolderLink which marks any
folder, even if it is not explicitly expandable.
Hides the item in both start menu styles and adjusts search height to
ensure the empty space is used. Partially fixes#660, but currently
does not honor group policy settings.
If set, intercepts the search hint's DrawText function and swaps out the
default text for user-defined text. Leaving the text blank results in an
empty search box.
When loading XML files, settings with active edit boxes open will not be
adjusted. This adds an additional tab-reload before the load begins to
forcibly close any active edit boxes.
Intercepts *most* instances of FLAG_DEFAULT getting set, including
when XML files are loaded and when Open-Shell starts, adding
if-statements to those spots to check if a new value is actually
different from the setting's default value. Ensures more consistency
behind the scenes and gets rid of inaccurate bold highlights.
Opens pinned items on both sides of the start menu in just one click,
while preserving hover functionality. Ignores the All Programs button
for now as the All Programs folder is rarely accessed and this option
can obstruct its use, especially for the inline menu style. Fixes#692.
When using skin with a different second column icon size, all of the
icons in it would become blank.
Because m_bTwoColumns is set after AddStandardItems, it is still false
in the column break check. As a workaround, use the value it's assigned
later in InitWindowInternal instead.
FixOpen-Shell/Open-Shell-Menu#980
This will accurately represent when these changes are able to take effect. Currently, the settings don't make any immediate changes or are broken when applied, and this should fix that.
Fixes#602.
This will make the padding of list items stay the same regardless of if icon frames are enabled or not. List padding shouldn't change with the icon frame option because lists don't contain icon frames.
This should improve the right-hand spacing when icon frames are enabled, and right-hand icons are disabled. There shouldn't be any extra icon/text padding for Main2 when icons aren't enabled.
(Modern) Settings are more and more important in Windows 10,
so it makes sense to show them above Control Panel.
This changes only defaults, users will be still able to order start menu
items as they like.
Fixes#23.
`Open-Shell` hooks `SHFillRectClr` (ordinal 197) API from `shlwapi.dll`
in order to be able to customize taskbar.
The API is hooked even if taskbar customization is disabled in `Open-Shell` (default).
`WindowBlinds` hooks the same API so this is causing clashes between
both programs.
In fact `Open-Shell` hooks later which makes `WindowBlinds` hook to be
completely ignored.
The solution would be to hook only if taskbar customization is enabled.
This way `Open-Shell` should be more compatible with other customization
tools in default state.
Fixes#433.
Some icons (modern settings, jump-list tasks) are monochrome, basically
they are defined just by alpha channel.
Thus they can be displayed in any color (white is default).
Since these icons are white by default, they look nice on dark
backgrounds. But they are not very visible on light backgrounds.
Thus the idea is to 'colorize' such icon using color of corresponding
text item. That way they will always have proper color.
Fixes#466.
Use `OnToastActivate` to display update dialog if user clicked on toast
during `update.exe` life-time.
Process messages for some time after displaying toast.
Otherwise toast may be not displayed at all.
Use toast notification to announce new update on modern Windows
versions.
The advantage of toasts is that they look more natural and they are
persistent. So one can find the information about new update in action
center even after notification timed out.
Task jump-list items for modern apps require special handling.
First of all they don't provide icon directly.
Icon location is stored in `PKEY_AppUserModel_DestListLogoUri` property.
And then has to be resolved for given application package.
Next, context menu of provided `IShellLink` item doesn't seem to be able
to start actual link target.
Thus we need to obtain context menu of target item.
Fixes#375.
Link to modern application will be treat as modern application itself.
This fixes jump-lists and invert metro color option on modern apps pinned
to start menu.
Based on `HostId`:
* {7E0522FC-1AC4-41CA-AFD0-3610417A9C41}
execute `shell:::{PageId}`
* {12B1697E-D3A0-4DBC-B568-CCF64A3F934D}
execute command in `DeepLink`
Currently it was used only in some cases (like Programs/Apps folder).
It will be more consistent to respect the setting for all folder
items.
Fixes#436.
Adds virtual shell folder that contains items representing modern settings parsed from
`%windir%\ImmersiveControlPanel\Settings\AllSystemSettings_{253E530E-387D-4BC2-959D-E6F86122E5F2}.xml`.
It can be accessed via `shell:::{82E749ED-B971-4550-BAF7-06AA2BF7E836}` (in explorer).
Item in folder will open given setting page in `Settings` application.
Some projects do register COM server in Debug/Release sonfigurations.
We should do it with per-user redirection so that there is no need to
run elevated Visual Studio.
This has no effect on COM server registering in installed Opne-Shell.
It is related only to local development.
When `Invert Metro icon color` is enabled `Open-Shell` needs to
distinguish full color icons from monochromatic ones.
Color icons are displayed normally. Monochromatic ones are displayed
inverted (original background becomes transparent and foreground will
get Metro accent color).
Metro icon is loaded from Metro app resources (usually PNG image) as
bitmap with premultiplied alpha channel.
This causes monochromatic image to essentially become grayscale (because
RGB values are multiplied with alpha channel value).
Function `DetectGrayscaleImage` is used to distinguish such images.
Unfortunatelly if original image is grayscale (such as new Windows
Terminal icon) it is recognized as monochromatic and thus inverted.
To prevent this we will take into account also alpha channel in
`DetectGrayscaleImage`.
In monochromatic images alpha channel value will be the same as the rest of
channel values.
For color images alpha channel value will be different than other
channel values.
Fixes#364.
Delete confirmation dialog may be (partially) hidden behing start menu.
As a result the dialog may be not accessible because start menu(s) are
displayed as top-most windows.
Thus when executing menu command we will make menu(s) non-topmost. So that
other windows can be drawn on top of menu(s).
Fixes#257
In several cases we don't want menu(s) to close when an action on menu was
done. For example on drag-n-drop or menu item deletion (where confirmation
dialog is shown).
In such situations `s_bPreventClosing` was set to true (and then back to
false when closing was allowed again).
Though original code honored this variable only in certain situations and
typically (at least on Win10) menus were hidden/closed despite of it.
This patch changes the behavior and menus(s) are not closed when
`s_bPreventClosing` is set to true.
Basically now menu(s) stay visible until there is an action that changes
active window.
Following functionality was also removed because it is not needed now:
* CMenuContainer::HideTemp
* COwnerWindow::OnClear
WM_CLEAR was sent to the window only by already removed `HideTemp`
`Open-Shell` needs to adjust itself after OS upgrade. It seems that
`StartMenuHelper` registration is lost after such upgrade:
http://www.classicshell.net/forum/viewtopic.php?f=7&t=8082#p34821
To fix this registration, administrator rights are required (means user
interaction, UAC).
While this is acceptable in consumer environment, it is typically not
desired in business environment where users typically doesn't have
administrator rights.
This patch allows to run `Open-Shell` in silent upgrade mode that will:
* check if OS version changed (otherwise end immediately)
* perform OS upgrade tasks without any user interraction
Such mode can be then used to create scheduled task that will run this
silent upgrade check on every boot with system rights:
`schtasks /Create /RU "NT AUTHORITY\SYSTEM" /SC ONSTART /TN "Open-Shell OS updgrade check" /TR "%ProgramFiles%\Open-Shell\StartMenu.exe -upgrade -silent"`
#167
Commit 1a5f62a added possibility to hide Lock/Sleep/Hibernate buttons if
they were disabled in system power settings.
Unfortunately this didn't work for Lock button.
To fix the behavior we have to add lock command to `g_StdOptions` array
and then all the checks introduced in 1a5f62a will apply properly.
#173
Latest version of ClassicShell was 4.3.1. There is no reason to display
any warning about very old versions (< 2.0.0).
Besides, this will remove dependency on version.dll which could be misused
for DLL hijacking attack.
Fixes#72
* Fix naming inconsistencies
'Menu' vs 'StartMenu'
* Installer: Remove Facebook link
* Installer: Remove PayPal donate remnants
* OpenShellReadme: Remove info about product version
* Build: Add symbols to 7z archive
It is much smaller than ZIP (15MB vs 34MB).
* Build: Don't create source package
There is no need to create package with sources as sources for given
release can be easily obtained from git.
* AppVeyor: Remove unneeded install script
__MakeFinal.bat now handles it.
* Build: Less verbose output
* Build: Support for version suffix
AppVeyor may add suffix to version (X.Y.Z-abc) in case of PR builds.
* AppVeyor: Disable shallow clone
To be able to use git commands (in source indexing script).
Use history depth 1 instead.
* Build: Add source index to PDBs
Add source information to PDBs so that source files can be retrieved from Github by debugger.
State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users.
State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored.
State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting.
ClassicIECat.text = Classic IE
ClassicIECatHelp.text = Classic IE group policy settings
SUPPORTED_CS404.text = Requires Classic Start 4.0.4 or later.
SUPPORTED_IE9.text = Requires Internet Explorer 9 or later.
EnableSettings.nameOverride = Enable settings
EnableSettings.tipOverride = Enables the users to edit their own settings
CaptionFont.tipAddition = .\n\nThe format is <font name>, <normal | bold | italic | bold_italic>, <size>. For example "Segoe UI, normal, 9"
State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users.
State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored.
State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting.
ClassicStartCat.text = Classic Start
ClassicStartCatHelp.text = Classic Start group policy settings
SUPPORTED_CS404.text = Requires Classic Start 4.0.4 or later.
Language.nameOverride = Language for Classic Start components
Language.tipOverride = Select the language to be used by Classic Start (for example en-US or de-DE). The language will affect the text in the start menu, toolbars, etc. If the appropriate language DLL is installed, the settings UI may also be translated
Update.nameOverride = Enable automatic checks for new versions
Update.tipOverride = When this is checked, Classic Start will check for new releases every week. You will be notified if there is a new version of the Classic Start software or a new update for your current language
\pard\widctlpar\sa200\sl276\slmult1\cf2\expndtw15\kerning0\b\i\fs24 Version 4.3.1 \endash general release\par
\pard\widctlpar\cf0\expndtw0\b0\i0\f1\fs22\par
Thank you for installing \cf3\b Classic Start\'99\cf0\b0 . It adds some missing features to Windows 7, Windows 8, Windows 8.1 and Windows 10 - like a classic start menu, start button, a toolbar for Windows Explorer and others.\par
\par
The latest version can be found on the Classic Start website:\par
\cf3\b Classic Start Menu\cf0 \b0 is a flexible start menu that can mimic the menu behavior of Windows 2000, XP and Windows 7. It has a variety of advanced features:\par
\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Choose between \ldblquote Classic\rdblquote and \ldblquote Windows 7\rdblquote styles\par
{\pntext\f2\'B7\tab}Drag and drop to let you organize your applications\par
{\pntext\f2\'B7\tab}Options to show Favorites, expand Control Panel, etc\par
{\pntext\f2\'B7\tab}Shows recently used documents. The number of documents to display is customizable\par
{\pntext\f2\'B7\tab}Translated in 35 languages, including Right-to-left support for Arabic and Hebrew\par
{\pntext\f2\'B7\tab}Does not disable the original start menu in Windows. You can access it by Shift+Click on the start button\par
{\pntext\f2\'B7\tab}Right-click on an item in the menu to delete, rename, sort, or perform other tasks\par
{\pntext\f2\'B7\tab}The search box helps you find your programs and files without getting in the way of your keyboard shortcuts\par
{\pntext\f2\'B7\tab}Supports jumplists for easy access to recent documents and common tasks\par
{\pntext\f2\'B7\tab}Available for 32 and 64-bit operating systems\par
{\pntext\f2\'B7\tab}Has support for skins, including additional 3rd party skins. Make your own!\par
{\pntext\f2\'B7\tab}Fully customizable in both looks and functionality\par
{\pntext\f2\'B7\tab}Support for Microsoft\rquote s Active Accessibility\par
{\pntext\f2\'B7\tab}Converts the \ldblquote All Programs\rdblquote button in the Windows menu into a cascading menu\par
{\pntext\f2\'B7\tab}Implements a customizable start button\par
{\pntext\f2\'B7\tab}Can show, search and launch Windows Store apps (Windows 8)\par
\cf3\b Classic Explorer\cf0 \b0 is a plugin for Windows Explorer that:\par
\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Adds a toolbar to Explorer for some common operations (Go to parent folder, Cut, Copy, Paste, Delete, Properties, Email). The toolbar is fully customizable\par
{\pntext\f2\'B7\tab}Replaces the copy UI in Windows 7 with the more user-friendly \ldblquote classic\rdblquote version similar to Windows XP\par
{\pntext\f2\'B7\tab}Handles Alt+Enter in the folder panel of Windows Explorer and shows the properties of the selected folder\par
{\pntext\f2\'B7\tab}Has options for customizing the folder panel to look more like the Windows XP version or to not fade the expand buttons\par
{\pntext\f2\'B7\tab}Can show the free disk space and the total size of the selected files in the status bar\par
{\pntext\f2\'B7\tab}Can disable the breadcrumbs in the address bar\par
{\pntext\f2\'B7\tab}Fixes a long list of features that are broken in Windows 7 \endash missing icon overlay for shared folders, the jumping folders in the navigation pane, missing sorting headers in list view, and more\par
\cf3\b Classic IE is a plugin for Internet Explorer 9 and later versions that:\par
\cf0\b0\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Adds a caption to the title bar so you can see the full title of the page\par
{\pntext\f2\'B7\tab}Shows the security zone in the status bar\par
{\pntext\f2\'B7\tab}Shows the loading progress in the status bar\par
The toolbar for Windows Explorer may not show up automatically after installation. You have to do a few things before you can use it.\par
\par
\cf3\b Windows 7:\cf0\b0 Press Alt+V to open the View menu. Open the \ldblquote Toolbars\rdblquote sub-menu and select \ldblquote Classic Exlporer Bar\rdblquote . Keep in mind that the menu will always be displayed as long as the toolbar is visible.\par
\par
\cf3\b Windows 8:\cf0\b0 Press Alt+V to open the View ribbon. Click on the down arrow in the \ldblquote Options\rdblquote section. Select \ldblquote Classic Explorer Bar\rdblquote\par
\par
If these steps don\rquote t work, it may be possible that the Explorer extensions have been disabled. Check the following, then try to show the toolbar again:\par
\widctlpar\fi-360\li720 Open Internet Explorer and go to Tools -> Manage add-ons. Locate the add-ons \ldblquote Classic Explorer Bar\rdblquote and \ldblquote ExplorerBHO Class\rdblquote and make sure they are enabled.\par
{\pntext\f1 2)\tab}Maybe the browser extensions are disabled on your system. This is usually the default for Windows Server. Open the "Internet Options", go to the "Advanced" tab, and check the option "Enable third-party browser extensions".\par
\pard\widctlpar\par
On Windows 7 you have to turn on the status bar from the View menu if you want to see the file sizes.\par
On Windows 8 the Classic Explorer status bar is different from the one in Explorer. You can show/hide the first one from the Classic Explorer settings dialog and show/hide the second one from Explorer\rquote s folder options dialog.\par
\par
The caption in Internet Explorer may not show up automatically after installation. You may get a prompt to enable the ClassicIEBHO plugin. If you get the prompt, select \ldblquote Enable\rdblquote . If you don\rquote t get a prompt, go to Tools -> Manage add-ons and make sure the add-on \ldblquote ClassicIEBHO\rdblquote is enabled. After that restart Internet Explorer.\par
\widctlpar\fi-360\li720 Open \b Control Panel -> Programs and Features\b0 and double-click on \b Classic Shell\b0 . Then follow the instructions. You may have to restart Windows to complete the process.\par
{\pntext\f1 2)\tab}If you installed any additional skins for the start menu you will have to delete them manually\par