EZ Blog

List of all Windows 10 keyboard shortcuts

On Windows 10, keyboard shortcuts are quick ways to navigate and perform actions using one or multiple key combos, which otherwise would take many more clicks and time to complete the task with the mouse. The system has tons of keyboard shortcuts, but you don't need to learn every shortcut on Windows 10. You only need to remember those that can help you make your life easier and improve productivity. In this Windows 10 guide, we will list all the most helpful keyboard shortcuts to navigate and operate the desktop and apps. You can also check out these additional shortcuts that you will need to know for Windows 11.

Windows 10 keyboard shortcuts

 

This comprehensive list includes the most helpful keyboard shortcuts to perform tasks on Windows 10 a little faster.

 
Keyboard shortcutAction
Ctrl + A  Select all content.
Ctrl + C (or Ctrl + Insert) Copy selected items to clipboard.
Ctrl + X Cut selected items to clipboard.
Ctrl + V (or Shift + Insert) Paste content from clipboard.
Ctrl + Z Undo an action, including undelete files (limited).
Ctrl + Y Redo an action.
Ctrl + Shift + N Create new folder on desktop or File Explorer.
Alt + F4 Close active window. (If no active window is present, a shutdown box appears.)
Ctrl + D (Del) Delete selected item to the Recycle Bin.
Shift + Delete Delete the selected item permanently, skipping Recycle Bin.
F2 Rename selected item.
Esc Close current task.
Alt + Tab Switch between open apps.
PrtScn Take a screenshot and stores it in the clipboard.
Windows key + I Open Settings app.
Windows key + E Open File Explorer.
Windows key + A Open Action center.
Windows key + D Display and hide the desktop.
Windows key + L Lock device.
Windows key + V Open Clipboard bin.
Windows key + Period (.) or Semicolon (;)  Open emoji panel.
Windows key + PrtScn Capture a full screenshot in the "Screenshots" folder.
Windows key + Shift + S Capture part of the screen with Snip & Sketch.
Windows key + Left arrow key Snap app or window left.
Windows key + Right arrow key Snap app or window right.

 

soft

 EZ Game Booster  

EZ Game Booster

 Total System Optimizer

Enhance your gaming experience by turning unnecessary processes off and optimizing the usage of computer resources with this application. 

 

File Explorer shortcuts

 

File Explorer includes keyboard shortcuts to help you get things done a little quicker. These are the most useful shortcuts for the default file manager on Windows 10.

 
Keyboard shortcutAction
Windows key + E Open File Explorer.
Alt + D Select address bar.
Ctrl + E (or F) Select search box.
Ctrl + N Open new window.
Ctrl + W Close active window.
Ctrl + F (or F3) Start search.
Ctrl + Mouse scroll wheel Change view file and folder.
Ctrl + Shift + E Expands all folders from the tree in the navigation pane.
Ctrl + Shift + N Creates a new folder on desktop or File Explorer.
Ctrl + L Focus on the address bar.
Ctrl + Shift + Number (1-8) Changes folder view.
Alt + P Display preview panel.
Alt + Enter Open Properties settings for the selected item.
Alt + Right arrow key View next folder.
Alt + Left arrow key (or Backspace) View previous folder.
Alt + Up arrow Move up a level in the folder path.
F11 Switch active window full-screen mode.
F2 Rename selected item.
F4 Switch focus to address bar.
F5 Refresh File Explorer's current view.
F6 Cycle through elements on the screen.
Home Scroll to the top of the window.
End Scroll to the bottom of the window.

 

Desktop shortcuts

 

On Windows 10, you can use these keyboard shortcuts to open, close, navigate, and perform tasks more quickly throughout the desktop experience, including the Start menu, Taskbar, Settings, and more.

 
Keyboard shortcutAction
Windows key (or Ctrl + Esc) Open Start menu.
Ctrl + Arrow keys Change Start menu size.
Ctrl + Shift + Esc Open Task Manager.
Ctrl + Shift Switch keyboard layout.
Alt + F4 Close active window. (If no active window is present, a shutdown box appears.)
Ctrl + F5 (or Ctrl + R) Refresh current window.
Ctrl + Alt + Tab View open apps.
Ctrl + Arrow keys (to select) + Spacebar Select multiple items on desktop or File Explorer.
Alt + Underlined letter Runs command for the underlined letter in apps.
Alt + Tab Switch between open apps while pressing Tab multiple times.
Alt + Left arrow key Go back.
Alt + Right arrow key Go forward.
Alt + Page Up Move up one screen.
Alt + Page Down Move down one screen.
Alt + Esc Cycle through open windows.
Alt + Spacebar Open context menu for the active window.
Alt + F8 Reveals typed password in Sign-in screen.
Shift + Click app button Open another instance of an app from the Taskbar.
Ctrl + Shift + Click app button Run app as administrator from the Taskbar.
Shift + Right-click app button Show window menu for the app from the Taskbar.
Ctrl + Click a grouped app button Cycle through windows in the group from the Taskbar.
Shift + Right-click grouped app button Show window menu for the group from the Taskbar.
Ctrl + Left arrow key Move the cursor to the beginning of the previous word.
Ctrl + Right arrow key Move the cursor to the beginning of the next word.
Ctrl + Up arrow key Move the cursor to the beginning of the previous paragraph
Ctrl + Down arrow key Move the cursor to the beginning of the next paragraph.
Ctrl + Shift + Arrow key Select block of text.
Ctrl + Spacebar Enable or disable Chinese IME.
Shift + F10 Open context menu for selected item.
F10 Enable app menu bar.
Shift + Arrow keys Select multiple items.
Windows key + X Open Quick Link menu.
Windows key + Number (0-9) Open the app in number position from the Taskbar.
Windows key + T Cycle through apps in the Taskbar.
Windows key + Alt + Number (0-9) Open Jump List of the app in number position from the Taskbar.
Windows key + D Display and hide the desktop.
Windows key + M Minimize all windows.
Windows key + Shift + M Restore minimized windows on the desktop.
Windows key + Home Minimize or maximize all but the active desktop window.
Windows key + Shift + Up arrow key Stretch desktop window to the top and bottom of the screen.
Windows key + Shift + Down arrow key Maximize or minimize active desktop windows vertically while maintaining width.
Windows key + Shift + Left arrow key Move active window to monitor on the left.
Windows key + Shift + Right arrow key Move active window to monitor on the right.
Windows key + Left arrow key Snap app or window left.
Windows key + Right arrow key Snap app or window right.
Windows key + S (or Q) Open Search.
Windows key + Alt + D Open date and time in the Taskbar.
Windows key + Tab Open Task View.
Windows key + Ctrl + D Create new virtual desktop.
Windows key + Ctrl + F4 Close active virtual desktop.
Windows key + Ctrl + Right arrow Switch to the virtual desktop on the right.
Windows key + Ctrl + Left arrow Switch to the virtual desktop on the left.
Windows key + P Open Project settings.
Windows key + A Open Action center.
Windows key + I Open Settings app.
Backspace Return to the Settings app home page.

 

Windows key shortcuts

 

The Windows key combined with other keys allows you to perform many useful tasks, such as launch Settings, File Explorer, Run command, apps pinned in the Taskbar, or open specific features like Narrator or Magnifier. You can also complete tasks like controlling windows, and virtual desktops, taking screenshots, locking the computer, and more.

 

Here's a list of all the most common keyboard shortcuts using the Windows key.

 
Keyboard shortcutAction
Windows key Open Start menu.
Windows key + A Open Action center.
Windows key + S (or Q) Open Search.
Windows key + D Display and hide the desktop.
Windows key + L Locks computer.
Windows key + M Minimize all windows.
Windows key + B Set focus notification area in the Taskbar.
Windows key + C Launch Cortana app.
Windows key + F Launch Feedback Hub app.
Windows key + G Launch Game bar app.
Windows key + Y Change input between desktop and Mixed Reality.
Windows key + O Lock device orientation.
Windows key + T Cycle through apps in the Taskbar.
Windows key + Z Switch input between the desktop experience and Windows Mixed Reality.
Windows key + J Set focus on a tip for Windows 10 when applicable.
Windows key + H Open dictation feature.
Windows key + E Open File Explorer.
Windows key + I Open Settings.
Windows key + R Open Run command.
Windows key + K Open Connect settings.
Windows key + X Open Quick Link menu.
Windows key + V Open Clipboard bin.
Windows key + W Open the Windows Ink Workspace.
Windows key + U Open Ease of Access settings.
Windows key + P Open Project settings.
Windows key + Ctrl + Enter Open Narrator.
Windows key + Plus (+) Zoom in using the magnifier.
Windows key + Minus (-) Zoom out using the magnifier.
Windows key + Esc Exit magnifier.
Windows key + Forward-slash (/) Start IME reconversion.
Windows key + Comma (,) Temporarily peek at the desktop.
Windows key + Up arrow key Maximize app windows.
Windows key + Down arrow key Minimize app windows.
Windows key + Home Minimize or maximize all but the active desktop window.
Windows key + Shift + M Restore minimized windows on the desktop.
Windows key + Shift + Up arrow key Stretch desktop window to the top and bottom of the screen.
Windows key + Shift + Down arrow key Maximize or minimize active windows vertically while maintaining width.
Windows key + Shift + Left arrow key Move active window to monitor on the left.
Windows key + Shift + Right arrow key Move active window to monitor on the right.
Windows key + Left arrow key Snap app or window left.
Windows key + Right arrow key Snap app or window right.
Windows key + Number (0-9) Open the app in number position in the Taskbar.
Windows key + Shift + Number (0-9) Open another app instance in the number position in the Taskbar.
Windows key + Ctrl + Number (0-9) Switch to the last active window of the app in the number position in the Taskbar.
Windows key + Alt + Number (0-9) Open Jump List of the app in number position in the Taskbar.
Windows key + Ctrl + Shift + Number (0-9) Open another instance as an administrator of the app in the number position in the Taskbar.
Windows key + Ctrl + Spacebar Change previous selected input option.
Windows key + Spacebar Change keyboard layout and input language.
Windows key + Tab Open Task View.
Windows key + Ctrl + D Create a virtual desktop.
Windows key + Ctrl + F4 Close active virtual desktop.
Windows key + Ctrl + Right arrow Switch to the virtual desktop on the right.
Windows key + Ctrl + Left arrow Switch to the virtual desktop on the left.
Windows key + Ctrl + Shift + B Wake up the device when black or a blank screen.
Windows key + PrtScn Capture a full screenshot in the "Screenshots" folder.
Windows key + Shift + S Create part of the screen screenshot.
Windows key + Shift + V Cycle through notifications.
Windows key + Ctrl + F Open search for the device on a domain network.
Windows key + Ctrl + Q Open Quick Assist.
Windows key + Alt + D Open date and time in the Taskbar.
Windows key + Period (.) or Semicolon (;) Open emoji panel.
Windows key + Pause Show System Properties dialog box.

How to Optimize Windows 10 for Gaming

If you are an enthusiastic gamer you probably know that Windows 10 is an excellent OS for gamers because it assimilates many useful features and programs. But just like previous versions of Windows, Windows 10 does require a bit of tweaking so that you can enjoy the best gaming experience Windows 10 has to offer!

In this article, we will take a look at various tweaks about how to optimize Windows 10 for gaming to enhance the performance. With these simple tweaks, you will have a system that is ready to take on even the most graphically intense games available, assuming you have the required hardware.

Most of these tweaks will require a restart to take effect. We do not recommend applying all the tweaks at once and then restarting. Try out the following Windows 10 optimization guide for gaming.

 

How to Optimize Windows 10 for Gaming

 

#1. Delete Old Files

Remove all the unnecessary files viz. movies, pictures, word documents on your computer. If such files are not in use anymore, do away with them. In case you need these in future, take backup on an external drive or maybe a USB flash drive. Not only will your machine speed up but will also get ready for a good gaming session. Remember, the more space you have, the more room you have for games.

 

#2. Disable SuperFetch (SysMain)

SysMain (formerly SuperFetch) is a built-in Windows feature that improves startup times for apps and Windows itself. However, games do not generally benefit from it. Indeed, background activity often increases when it is enabled, but turning it off can improve gaming performance on your Windows 10 PC. Check out our detailed guide on reducing CPU and memory usage to learn how you can turn off SysMain (SuperFetch) on your computer.

 Gamiing 4

 

#3. Update Windows

You should make sure that your computer is completely up to date. Go to Start < Settings < Update & Security. Select the Check for updates button and then run anything that shows up. This will probably make you reboot once it is done. If not, go ahead and reboot it anyway as a precautionary step.

Update Windows

 

#4. Fine-tune Windows 10 Visual Effects

The graphical user interface of Windows 10 is highly impressive. It is smooth on your eyes and good to look at. Its effects make using Windows 10 an awesome experience. However, these effects come at a cost of performance. Windows has to make extra use of the resources to display all these effects that really are not essential for a decent quality performing machine.

So, if you are more concerned with power for gaming, you should turn off these effects. Go to Start > Settings. Type Performance in the search box. Then select Adjust the appearance and performance of Windows. In the box that pops up, uncheck any effects you do not want to use.

 

#5. Disable Automatic Update and Restart

Although Windows 10 is great at updating itself, for best performance, you do not want it downloading and installing updates at just about any time. If you have Windows 10 Pro, you can change these settings on your computer. However, Windows 10 Home does not let you do that.

Go to Start > Settings > Update and Security. Remember that when you turn this feature off, you will be responsible for running updates on your system. If you cannot change it, then try adjusting the active hours by clicking on Change active hours. This will set aside a time for updates and help stop those accidental interferences while you are gaming.

 

 
#6. Run Virus and Malware Scans

Malware, spyware, and viruses are infamous for running in the background and slowing down your system. If you go on the Internet, there is a probability that you picked up some adware tracking along the way. Running a virus and malware scan on your computer will not only clean up that junk so it does not run in the background, but it will also remove anything that could be damaging to you or your computer.

 
 
comodo antivirus
 
 
#7. Disable Prefetch

To disable Prefetch, you will need to dig around in the Windows registry. So search for ‘regedit’ in the Windows search bar and open the registry editor. Then, navigate to the following key using the left pane: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ PrefetchParameters. Now double-click on EnablePrefetcher in the right pane and change the DWORD (32-bit) Value to “0” (without quotes).

Disable Prefetch

 

#8. Disk Optimization

Now that you have gotten rid of all the old files and apps from your system and you have cleaned up any temporary files and installation files, it is time to optimize your disk. Although Windows 10 will do this for you on a set schedule, it is recommended that you do it yourself as you have applied various tweaks. This will defragment your hard drive so it can run faster and file locating will also speed up.

To optimize your disk, go to Start > Settings. In the search box, type in “Defrag” and the option to access the application will be displayed. A list of the hard drives attached to your computer will then be displayed. In this article, we will focus on the C Drive as that is the drive that powers Windows and most probably has the games installed. Highlight the C Drive and then click on the Optimize button. Then make sure the C drive is still selected and press Optimize again. This will initiate the process.The time taken will depend on how fragmented the drive is.

 

#9. Nagle’s Gaming Algorithm

Nagle’s Algorithm bundles data packets together at the cost of a smoother Internet connection. In most cases, it makes the connection more stable and the speed bump is not noticeable if you are just net surfing. However, you may experience latency issues if you are playing a game. To disable it, you will have to change the Registry. You must take note that editing the registry can harm your computer and even wreck the Windows installation if you are not cautious.

  • Go to Start > type regedit > Regedit.
  • Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interface.
  • Under Interface, you will find numbers and letters that correspond to your IP Address.
  • Match your IP Address with the numbers listed under DhcpIPAddress.
  • If you do not know your IP Address, open a Command Prompt and type ipconfig. It will tell you the IPv4 address.
  • Right click on that folder and select New > DWORD (32-bit) Value. Create two DWORD values.
  • Name the first TcpAckFrequency and the other TCPNoDelay.
  • Double click each one and mark their parameter value to 1.
  • If you have any problems with your network after these modifications, repeat these steps and set the value to 0 to disable them.
  • Reboot your machine once you have finished.

soft

 EZ Game Booster  

EZ Game Booster

 Total System Optimizer

Enhance your gaming experience by turning unnecessary processes off and optimizing the usage of computer resources with this application. 

 

#10. Update Your Drivers

If your drivers are not updated, you should not expect smooth gaming sessions, especially if you play the latest and best games available. This especially applies to your video card drivers. Windows 10 will update some of the drivers itself, but you must be on the lookout for the latest drivers.

We will focus on the video card drivers. You will have to visit your manufacturer’s website to get the latest ones. There are two main video card manufacturers out there – Radeon by AMD and NVIDIA. First, identify the type of card you have by clicking Start > Typing Device Manager. Once there, you can see the type of your video card. Now, visit the website for your manufacturer. Let the site search and identify your card and download the drivers for you. Install them and then reboot your machine.

Update Your Drivers

 

#11. Enable Focus Assist

Notification pop-ups and the accompanying chimes can interrupt games, and this is where the Focus Assist feature comes in handy. Focus Assist in Windows 10 lets you specify how and when you receive notifications. So to prevent annoying messages and pop-ups when you’re gaming, open Settings (can also use the shortcut Windows key +I) -> System -> Focus Assist. Now select ‘Alarms Only’ or ‘Priority Only’ to hide all unnecessary pop-ups.

Focus Assist

 

Conclusion – How to Optimize Windows 10 for Gaming

So these were some tweaks for Windows 10 performance improvement that helps you be at the top of your gaming experience. We suggest you try them to improve your overall gaming performance. 

Importing and Exporting Registry Settings

Importing and Exporting Registry Settings

A great feature of the Registry Editor is it's ability to import and export registry settings to a text file, this text file, identified by the .REG extension, can then be saved or shared with other people to easily modify local registry settings. You can see the layout of these text files by simply exporting a key to a file and opening it in Notepad, to do this using the Registry Editor select a key, then from the "Registry" menu choose "Export Registry File...", choose a filename and save. If you open this file in notepad you will see a file similar to the example below:

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\Setup]
"SetupType"=dword:00000000
"CmdLine"="setup -newsetup"
"SystemPrefix"=hex:c5,0b,00,00,00,40,36,02

The layout is quite simple, REGEDIT4 indicated the file type and version, [HKEY_LOCAL_MACHINE\SYSTEM\Setup] indicated the key the values are from, "SetupType"=dword:00000000 are the values themselves the portion after the "=" will vary depending on the type of value they are; DWORDString or Binary.

So by simply editing this file to make the changes you want, it can then be easily distributed and all that need to be done is to double-click, or choose "Import" from the Registry menu, for the settings to be added to the system Registry.

Deleting keys or values using a REG file
It is also possible to delete keys and values using REG files. To delete a key start by using the same format as the the REG file above, but place a "-" symbol in front of the key name you want to delete. For example to delete the [HKEY_LOCAL_MACHINE\SYSTEM\Setup] key the reg file would look like this:

REGEDIT4

[-HKEY_LOCAL_MACHINE\SYSTEM\Setup]

The format used to delete individual values is similar, but instead of a minus sign in front of the whole key, place it after the equal sign of the value. For example, to delete the value "SetupType" the file would look like:

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\Setup]
"SetupType"=-

Use this feature with care, as deleting the wrong key or value could cause major problems within the registry, so remember to always make a backup first.

Regedit Command Line Options
Regedit has a number of command line options to help automate it's use in either batch files or from the command prompt. Listed below are some of the options, please note the some of the functions are operating system specific.

regedit.exe [options] [filename] [regpath]
[filename]  Import .reg file into the registry
/s [filename]  Silent import, i.e. hide confirmation box when importing files
/e [filename] [regpath]  Export the registry to [filename] starting at [regpath]
 e.g. regedit /e file.reg HKEY_USERS\.DEFAULT
/L:system  Specify the location of the system.dat to use
/R:user  Specify the location of the user.dat to use
/C [filename]  Compress (Windows 10)
/D [regpath]  Delete the specified key (Windows 10)
Editing the Registry

Editing the Registry

The Registry Editor (REGEDIT.EXE) is included with most version of Windows (although you won't find it on the Start Menu) it enables you to view, search and edit the data within the Registry. There are several methods for starting the Registry Editor, the simplest is to click on the Start button, then select Run, and in the Open box type "regedit", and if the Registry Editor is installed it should now open and look like the image below.

 

regediting

An alternative Registry Editor (REGEDT32.EXE) is available for use with Windows, it includes some additional features not found in the standard version, including; the ability to view and modify security permissions, and being able to create and modify the extended string values REG_EXPAND_SZ & REG_MULTI_SZ.

Create a Shortcut to Regedit
This can be done by simply right-clicking on a blank area of your desktop, selecting New, then Shortcut, then in the Command line box enter "regedit.exe" and click Next, enter a friendly name (e.g. 'Registry Editor') then click Finish and now you can double click on the new icon to launch the Registry Editor.

Using Regedit to modify your Registry
Once you have started the Regedit you will notice that on the left side there is a tree with folders, and on the right the contents (values) of the currently selected folder.

Like Windows explorer, to expand a certain branch (see the structure of the registry section), click on the plus sign [+] to the left of any folder, or just double-click on the folder. To display the contents of a key (folder), just click the desired key, and look at the values listed on the right side. You can add a new key or value by selecting New from the Edit menu, or by right-clicking your mouse. And you can rename any value and almost any key with the same method used to rename files; right-click on an object and click rename, or click on it twice (slowly), or just press F2 on the keyboard. Lastly, you can delete a key or value by clicking on it, and pressing Delete on the keyboard, or by right-clicking on it, and choosing Delete.

Note: it is always a good idea to backup your registry before making any changes to it. It can be intimidating to a new user, and there is always the possibility of changing or deleting a critical setting causing you to have to reinstall the whole operating system. It's much better to be safe than sorry!

The Structure of the Registry

The Structure of the Registry

The Registry has a hierarchal structure, although it looks complicated the structure is similar to the directory structure on your hard disk, with Regedit being similar to Windows Explorer.

reg2

There are six main branches, each containing a specific portion of the information stored in the Registry. They are as follows:

  • HKEY_CLASSES_ROOT - This branch contains all of your file association mappings to support the drag-and-drop feature, OLE information, Windows shortcuts, and core aspects of the Windows user interface.
  • HKEY_CURRENT_USER - This branch links to the section of HKEY_USERS appropriate for the user currently logged onto the PC and contains information such as logon names, desktop settings, and Start menu settings.
  • HKEY_LOCAL_MACHINE - This branch contains computer specific information about the type of hardware, software, and other preferences on a given PC, this information is used for all users who log onto this computer.
  • HKEY_USERS - This branch contains individual preferences for each user of the computer, each user is represented by a SID sub-key located under the main branch.
  • HKEY_CURRENT_CONFIG - This branch links to the section of HKEY_LOCAL_MACHINE appropriate for the current hardware configuration.
  • HKEY_DYN_DATA - This branch points to the part of HKEY_LOCAL_MACHINE, for use with the Plug-&-Play features of Windows, this section is dymanic and will change as devices are added and removed from the system.

Each registry value is stored as one of five main data types:

  • REG_BINARY - This type stores the value as raw binary data. Most hardware component information is stored as binary data, and can be displayed in an editor in hexadecimal format.
  • REG_DWORD - This type represents the data by a four byte number and is commonly used for boolean values, such as "0" is disabled and "1" is enabled. Additionally many parameters for device driver and services are this type, and can be displayed in REGEDT32 in binary, hexadecimal and decimal format, or in REGEDIT in hexadecimal and decimal format.
  • REG_EXPAND_SZ - This type is an expandable data string that is string containing a variable to be replaced when called by an application. For example, for the following value, the string "%SystemRoot%" will replaced by the actual location of the directory containing the Windows NT system files. (This type is only available using an advanced registry editor such as REGEDT32)
  • REG_MULTI_SZ - This type is a multiple string used to represent values that contain lists or multiple values, each entry is separated by a NULL character. (This type is only available using an advanced registry editor such as REGEDT32)
  • REG_SZ - This type is a standard string, used to represent human readable text values.

Other data types not available through the standard registry editors include:

  • REG_DWORD_LITTLE_ENDIAN - A 32-bit number in little-endian format.
  • REG_DWORD_BIG_ENDIAN - A 32-bit number in big-endian format.
  • REG_LINK - A Unicode symbolic link. Used internally; applications should not use this type.
  • REG_NONE - No defined value type.
  • REG_QWORD - A 64-bit number.
  • REG_QWORD_LITTLE_ENDIAN - A 64-bit number in little-endian format.
  • REG_RESOURCE_LIST - A device-driver resource list.
How to block ISP tracking your traffic and data usage

How to block ISP tracking your traffic and data usage

The DNS connection 1.1.1.1 could fix one of the internet's biggest privacy issues.

What is a Proxy?

What is a Proxy?

Proxy & Proxies

 what is a proxy

 

proxy is a server or program that's part of the gateway or another computer that separates a local network from outside networks. You can think of it as an intermediary between your computer and the web pages you access on the Internet. Proxies are useful because they can protect your computer from malware and unwanted access from third-party users.

Types of proxies 👇


Hardware proxy

Hardware proxies come in the form of a physical proxy server, which mediates all traffic going to and from your computer or mobile device. The main benefit of proxy servers is that they help keep your local IP address "hidden" from cyber attackers. Additionally, they cache all pages accessed through a network, providing users with faster load times upon subsequent visits to a web page, and reducing a network's bandwidth usage. When a page is accessed that is not in the proxy server's cache, it accesses the page using its own IP address. Then, it caches that page and forwards it to the user.

Software proxy

An application firewall is also considered a proxy as it filters the information and communication your computer sends and receives at the application layer. Software proxies are often downloaded and installed on a computer. However, the service itself, which may require a monthly subscription fee, comes from a provider. Web-based proxies perform a similar function, but they exist entirely in the cloud.

Process list In Delphi (Source Code Attached)

Process list In Delphi (Source Code Attached)

unit uDGProcessList;

 

interface

uses

  SysUtils,

  Windows,

  Classes,

  Graphics,

  TlHelp32,

  ShellApi,

  PsApi;

type

  // type used to store information about a process

  PDGProcessRec = ^TDGProcessRec;

  TDGProcessRec = record

    Name: WideString;

    ExeName: WideString;

    UserName: WideString;

    Domain: WideString;

    StartDateTime: TDateTime;

    MemoryUsage: DWORD;

    Usage: DWORD;

    ProcessID: DWORD; // this process

    DefaultHeapID: DWORD;

    ModuleID: DWORD; // associated exe

    ThreadCount: DWORD;

    ParentProcessID: DWORD; // this process's parent process

    PriClassBase: Longint; // Base priority of process's threads

  end;// TDGProcessRec = record

type

  // type used to get user name and domain

  PTOKEN_USER = ^TOKEN_USER;

  _TOKEN_USER = record

    User: TSidAndAttributes;

  end;

  TOKEN_USER = _TOKEN_USER;

type

  TUnitType = (utByte, utKiloByte, utMegaByte, utGigaByte);

type

  TDGProcessList = class

  PRIVATE// variables and methods

    FList: TList;

    function GetProcessRec(INDEX: Integer): TDGProcessRec;

    function GetProcessFileName(dwProcessID: DWORD): WideString;

    function GetProcessUserAndDomain(dwProcessID: DWORD;

      var UserName, Domain: WideString): Boolean;

    function GetProcessStartDateTime(dwProcessID: DWORD): TDateTime;

    procedure SetProcessRec(INDEX: Integer; const Value: TDGProcessRec);

  PUBLIC// methods

    function Count: Integer;

    function TerminateProcess(dwProcessID: DWORD): Boolean; OVERLOAD;

    function TerminateProcess(const Name: WideString): Boolean; OVERLOAD;

    function Exists(dwProcessID: DWORD): Boolean; OVERLOAD;

    function Exists(dwProcessID: DWORD; var atIndex: Integer): Boolean; OVERLOAD;

    function Exists(const Name: WideString): Boolean; OVERLOAD;

    function Exists(const Name: WideString; var atIndex: Integer): Boolean; OVERLOAD;

    function ProcessInfoToStr(Index: Integer): WideString;

    function GetProcessIcon(Index: Integer;

      const bSmallIcon: Boolean = True): TIcon; OVERLOAD;

    function GetProcessIcon(const ExeName: WideString;

      const bSmallIcon: Boolean = True): TIcon; OVERLOAD;

    function GetProcessMemoryUsage(dwProcessID: DWORD;

      const UnitType: TUnitType = utByte): DWORD;

    procedure Clear;

    procedure Delete(Index: Integer);

    procedure Refresh;

  PUBLIC// properties

    property Process[INDEX: Integer]: TDGProcessRec

      read GetProcessRec write SetProcessRec; DEFAULT;

  PUBLIC// constructor and destructor

    constructor Create;

    destructor Destroy; override;

  end;// TDGProcessList = class

implementation

{ TDGProcessList }

procedure TDGProcessList.Clear;

var

  Index: Integer;

begin

  for Index := FList.Count -1 downto 0 do

    Delete(Index);

end;// procedure TDGProcessList.Clear;

function TDGProcessList.Count: Integer;

begin

  Result := FList.Count;

end;// function TDGProcessList.Count: Integer;

constructor TDGProcessList.Create;

begin

  FList := TList.Create;

end;// constructor TDGProcessList.Create;

procedure TDGProcessList.Delete(Index: Integer);

var

  ProcessRec: PDGProcessRec;

begin

  ProcessRec := FList[Index];

  Dispose(ProcessRec);

  FList.Delete(Index);

end;// procedure TDGProcessList.Delete(Index: Integer);

destructor TDGProcessList.Destroy;

begin

  Clear;

  FreeAndNil(FList);

  inherited;

end;// destructor TDGProcessList.Destroy;

function TDGProcessList.Exists(dwProcessID: DWORD): Boolean;

var

  Index: Integer;

begin

  Result := Exists(dwProcessID, Index);

end;// function TDGProcessList.Exists(dwProcessID: DWORD): Boolean;

function TDGProcessList.Exists(dwProcessID: DWORD;

  var atIndex: Integer): Boolean;

var

  Index: Integer;

begin

  Result := True;

  for Index := 0 to FList.Count -1 do

    if Process[Index].ProcessID = dwProcessID then begin

      atIndex := Index;

      Exit;

    end;// if Process[Index].th32ProcessID = dwProcessID then begin

  Result := False;

end;// function TDGProcessList.Exists(dwProcessID: DWORD;

function TDGProcessList.Exists(const Name: WideString): Boolean;

var

  Index: Integer;

begin

  Result := Exists(Name, Index);

end;// function TDGProcessList.Exists(const Name: AnsiString): Boolean;

function TDGProcessList.Exists(const Name: WideString;

  var atIndex: Integer): Boolean;

var

  Index: Integer;

begin

  Result := True;

  for Index := 0 to FList.Count -1 do

    if SameText(Process[Index].Name, Name) then begin

      atIndex := Index;

      Exit;

    end;// if SameText(Process[Index].Name, Name) then begin

  Result := False;

end;// function TDGProcessList.Exists(const Name: AnsiString;

function TDGProcessList.GetProcessFileName(dwProcessID: DWORD): WideString;

var

  Handle: THandle;

begin

  Result := EmptyStr;

  Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False,

    dwProcessID);

  try

    SetLength(Result, MAX_PATH);

    if Handle <> 0 then begin

      if GetModuleFileNameEx(Handle, 0, {$IFDEF UNICODE}PWideChar{$ELSE}PAnsiChar{$ENDIF}(Result), MAX_PATH) > 0 then

        SetLength(Result, StrLen(PChar(Result)))

      else

        Result := EmptyStr;

    end else begin// if Handle <> 0 then begin

       if GetModuleFileNameEx(Handle, 0, {$IFDEF UNICODE}PWideChar{$ELSE}PAnsiChar{$ENDIF}(Result), MAX_PATH) > 0 then

        SetLength(Result, StrLen(PChar(Result)))

      else

        Result := EmptyStr;

    end;// if Handle <> 0 then begin

  finally

    CloseHandle(Handle);

  end;// try

end;// function TDGProcessList.GetProcessFileName(dwProcessID: DWORD): AnsiString;

function TDGProcessList.GetProcessIcon(Index: Integer;

  const bSmallIcon: Boolean = True): TIcon;

begin

  Result := GetProcessIcon(Process[Index].ExeName);

end;// function TDGProcessList.GetProcessIcon(Index: Integer;

function TDGProcessList.GetProcessIcon(const ExeName: WideString;

  const bSmallIcon: Boolean = True): TIcon;

var

  FileInfo: _SHFILEINFO;

  Flags: DWORD;

begin

  if bSmallIcon then

    Flags := SHGFI_ICON or SHGFI_SMALLICON or SHGFI_SYSICONINDEX

  else

    Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_SYSICONINDEX;

  Result := TIcon.Create;

  SHGetFileInfo({$IFDEF UNICODE}PWideChar{$ELSE}PAnsiChar{$ENDIF}(ExeName), 0, FileInfo, SizeOf(FileInfo), Flags);

  Result.Handle := FileInfo.hIcon;

end;// function TDGProcessList.GetProcessIcon(const ExeName: AnsiString;

function TDGProcessList.GetProcessMemoryUsage(dwProcessID: DWORD;

  const UnitType: TUnitType = utByte): DWORD;

const

  CFACTOR_BYTE = 1;

  CFACTOR_KILOBYTE = CFACTOR_BYTE * 1024;

  CFACTOR_MEGABYTE = CFACTOR_KILOBYTE * 1024;

  CFACTOR_GIGABYTE = CFACTOR_MEGABYTE * 1024;

var

  MemCounters: TProcessMemoryCounters;

  hProcess: THandle;

begin

  Result := 0;

  MemCounters.cb := SizeOf(TProcessMemoryCounters);

  hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, dwProcessID);

  if hProcess <> 0 then begin

    if GetProcessMemoryInfo(hProcess, @MemCounters, SizeOf(MemCounters)) then

      case UnitType of

        utByte:

          Result := MemCounters.WorkingSetSize div CFACTOR_BYTE;

        utKiloByte:

          Result := MemCounters.WorkingSetSize div CFACTOR_KILOBYTE;

        utMegaByte:

          Result := MemCounters.WorkingSetSize div CFACTOR_MEGABYTE;

        utGigaByte:

          Result := MemCounters.WorkingSetSize div CFACTOR_GIGABYTE;

      end// case UnitType of

    else

      RaiseLastOSError;

    CloseHandle(hProcess)

  end;// if hProcess <> 0 then begin

end;// function TDGProcessList.GetProcessMemoryUsage(dwProcessID: DWORD;

function TDGProcessList.GetProcessRec(INDEX: Integer): TDGProcessRec;

begin

  if (INDEX <= -1) or (INDEX >= FList.Count) then

    raise Exception.Create('Index out of bounds');

  Result := PDGProcessRec(FList[INDEX])^;

end;// function TDGProcessList.GetProcessRec(INDEX: Integer): TDGProcessRec;

function TDGProcessList.GetProcessStartDateTime(

  dwProcessID: DWORD): TDateTime;

  function FileTimeToDateTime(ft: TFileTime): TDateTime;

  var

    ft1: TFileTime;

    st: TSystemTime;

  begin

    if ft.dwLowDateTime + ft.dwHighDateTime = 0 then

      Result := 0

    else

    begin

      FileTimeToLocalFileTime(ft, ft1);

      FileTimeToSystemTime(ft1, st);

      Result := SystemTimeToDateTime(st);

    end;

  end;

var

  ftCreationTime, lpExitTime, ftKernelTime, ftUserTime: TFileTime;

  hProcess: THandle;

begin

  Result := 0;

  hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, dwProcessID);

  if hProcess <> 0 then begin

    if GetProcessTimes(hProcess, ftCreationTime, lpExitTime,

        ftKernelTime, ftUserTime) then

      Result := FileTimeToDateTime(ftCreationTime)

    else

      RaiseLastOSError;

    CloseHandle(hProcess);

  end;// if hProcess <> 0 then begin

end;// function TDGProcessList.GetProcessStartDateTime(

function TDGProcessList.GetProcessUserAndDomain(dwProcessID: DWORD;

  var UserName, Domain: WideString): Boolean;

var

  hToken: THandle;

  cbBuf: Cardinal;

  tokUser: PTOKEN_USER;

  sidNameUse: SID_NAME_USE;

  hProcess: THandle;

  UserSize, DomainSize: DWORD;

  bSuccess: Boolean;

begin

  Result := False;

  hProcess := OpenProcess(PROCESS_QUERY_INFORMATION, False, dwProcessID);

  if hProcess <> 0 then begin

    if OpenProcessToken(hProcess, TOKEN_QUERY, hToken) then begin

      bSuccess := GetTokenInformation(hToken, TokenUser, nil, 0, cbBuf);

      tokUser := nil;

      while (not bSuccess) and

          (GetLastError = ERROR_INSUFFICIENT_BUFFER) do begin

        ReallocMem(tokUser, cbBuf);

        bSuccess := GetTokenInformation(hToken, TokenUser, tokUser, cbBuf, cbBuf);

      end;// while (not bSuccess) and...

      CloseHandle(hToken);

      if not bSuccess then

        Exit;

      UserSize := 0;

      DomainSize := 0;

      LookupAccountSid(nil, tokUser.User.Sid, nil, UserSize, nil, DomainSize, sidNameUse);

      if (UserSize <> 0) and (DomainSize <> 0) then begin

        SetLength(UserName, UserSize);

        SetLength(Domain, DomainSize);

        if LookupAccountSid(nil, tokUser.User.Sid, {$IFDEF UNICODE}PWideChar{$ELSE}PAnsiChar{$ENDIF}(UserName), UserSize,

            {$IFDEF UNICODE}PWideChar{$ELSE}PAnsiChar{$ENDIF}(Domain), DomainSize, sidNameUse) then begin

          Result := True;

          UserName := StrPas(PChar(UserName));

          Domain := StrPas(PChar(Domain));

        end;// if LookupAccountSid(nil, tokUser.User.Sid, PAnsiChar(UserName), UserSize,

      end;// if (UserSize <> 0) and (DomainSize <> 0) then begin

      if bSuccess then

        FreeMem(tokUser);

    end;// if OpenProcessToken(hProcess, TOKEN_QUERY, hToken) then begin

    CloseHandle(hProcess);

  end;// if hProcess <> 0 then begin

end;// function TDGProcessList.GetProcessUserAndDomain(dwProcessID: DWORD;

function TDGProcessList.ProcessInfoToStr(Index: Integer): WideString;

const

  CCRLF = #$D#$A;

  CPROCESSREC_FMT = CCRLF +

    'Name = %s' + CCRLF +

    'ExeName = %s' + CCRLF +

    'User name = %s' + CCRLF +

    'Domain = %s' + CCRLF +

    'Started = %s' + CCRLF +

    'Memory usage = %d bytes' + CCRLF +

    'Usage = %d' + CCRLF +

    'Process ID = %d' + CCRLF +

    'Default heap ID = %d' + CCRLF +

    'Module ID = %d' + CCRLF +

    'Threads = %d' + CCRLF +

    'Parent process ID = %d' + CCRLF +

    'Priority base class = %d' + CCRLF;

var

  ProcessRec: TDGProcessRec;

begin

  ProcessRec := Process[Index];

  Result := Format(CPROCESSREC_FMT, [

    ProcessRec.Name,

    ProcessRec.ExeName,

    ProcessRec.UserName,

    ProcessRec.Domain,

    DateTimeToStr(ProcessRec.StartDateTime),

    ProcessRec.MemoryUsage,

    ProcessRec.Usage,

    ProcessRec.ProcessID,

    ProcessRec.DefaultHeapID,

    ProcessRec.ModuleID,

    ProcessRec.ThreadCount,

    ProcessRec.ParentProcessID,

    ProcessRec.PriClassBase]);

end;// function TDGProcessList.ProcessInfoToStr(Index: Integer): AnsiString;

procedure TDGProcessList.Refresh;

var

  ProcessEntry32: TProcessEntry32;

  ProcessRec: PDGProcessRec;

  hSnapshot: THandle;

  UserName: WideString;

  Domain: WideString;

begin

  Clear;

  hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

  ProcessEntry32.dwSize := SizeOf(TProcessEntry32);

  if Process32First(hSnapshot, ProcessEntry32) then

    repeat

      New(ProcessRec);

      ProcessRec^.Name := pchar(StrPas(ProcessEntry32.szExeFile));

      ProcessRec^.ExeName := GetProcessFileName(ProcessEntry32.th32ProcessID);

      if GetProcessUserAndDomain(ProcessEntry32.th32ProcessID,

          UserName, Domain) then begin

        ProcessRec^.UserName := UserName;

        ProcessRec^.Domain := Domain;

      end;// if GetProcessUserAndDomain(ProcessEntry32.th32ProcessID,

      ProcessRec^.StartDateTime := GetProcessStartDateTime(

        ProcessEntry32.th32ProcessID);

      ProcessRec^.MemoryUsage := GetProcessMemoryUsage(

        ProcessEntry32.th32ProcessID);

      ProcessRec^.Usage := ProcessEntry32.cntUsage;

      ProcessRec^.ProcessID := ProcessEntry32.th32ProcessID;

      ProcessRec^.DefaultHeapID := ProcessEntry32.th32DefaultHeapID;

      ProcessRec^.ModuleID := ProcessEntry32.th32ModuleID;

      ProcessRec^.ThreadCount := ProcessEntry32.cntThreads;

      ProcessRec^.ParentProcessID := ProcessEntry32.th32ParentProcessID;

      ProcessRec^.PriClassBase := ProcessEntry32.pcPriClassBase;

      FList.Add(ProcessRec);

    until NOT Process32Next(hSnapshot, ProcessEntry32);

  if FList.Count > 0 then

    Delete(0);

  if hSnapshot <> 0 then

    CloseHandle(hSnapshot);

end;// procedure TDGProcessList.Refresh;

procedure TDGProcessList.SetProcessRec(INDEX: Integer;

  const Value: TDGProcessRec);

begin

  PDGProcessRec(FList[INDEX])^ := Value;

end;// procedure TDGProcessList.SetProcessRec(INDEX: Integer;

function TDGProcessList.TerminateProcess(dwProcessID: DWORD): Boolean;

var

  hProcess: THandle;

begin

  Result := False;

  hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, dwProcessID);

  if hProcess <> 0 then begin

    Result := Windows.TerminateProcess(hProcess, 0);

    CloseHandle(hProcess)

  end;// if hProcess <> 0 then begin

end;// function TDGProcessList.TerminateProcess(dwProcessID: DWORD): Boolean;

function TDGProcessList.TerminateProcess(const Name: WideString): Boolean;

var

  Index: Integer;

begin

  Result := False;

  for Index := 0 to FList.Count -1 do

    if SameText(Process[Index].Name, Name) then begin

      Result := TerminateProcess(Process[Index].ProcessID);

      Exit;

    end;// if SameText(Process[Index].Name, Name) then begin

end;// function TDGProcessList.TerminateProcess(const Name: AnsiString): Boolean;

end.// unit uDGProcessList;

 

 
 

Usage: 

 

uses

uDGProcessList;

 

 

How to fill a memo called Memo1 with all processes along with it's information


procedure TForm1.Button1Click(Sender: TObject);

var

  Index: Integer;

  ProcessList: TDGProcessList;

begin

  ProcessList := TDGProcessList.Create;

  ProcessList.Refresh;

  Memo1.Clear;

  for Index := 0 to ProcessList.Count -1 do

    Memo1.Text := Memo1.Text + ProcessList.ProcessInfoToStr(Index);

  FreeAndNil(ProcessList);

end;



How to terminate Notepad for instance


procedure TForm1.Button1Click(Sender: TObject);

var

  Index: Integer;

  ProcessList: TDGProcessList;

begin

  ProcessList := TDGProcessList.Create;

  ProcessList.Refresh;

  ProcessList.Exists('notepad.exe', Index);

  if (Index > 0) and (Index < ProcessList.Count) then

    ProcessList.TerminateProcess(ProcessList[Index].ProcessID);

  FreeAndNil(ProcessList);

end;
Attached Files: Download

 

 

Information

EZ SystemRepairs is a young and promising company that produces innovative software with advanced technology in the fields of system fixing, performance tune up as well as security protection.

Company