Windows for Developers
Windows is a capable development platform with its own conventions for paths, permissions, packages and tooling. When a project or script behaves differently from what the tutorial showed, these conventions are usually why.
File system and paths
- Windows uses drive letters (
C:\) and backslashes (C:\Users\you\repos). Network shares use UNC paths (\\server\share). - The file system (NTFS) ignores case but preserves it:
README.mdandreadme.mdare the same file. - Some names are reserved (
CON,NUL,COM1, …) and names must not end in a space or a period. - Paths used to be limited to 260 characters. Newer Windows versions can lift the limit, but it is opt-in and some tools still fail on long paths. Keep repositories in a short path such as
C:\repos. - Your profile lives in
C:\Users\<you>. App settings are underAppData(%APPDATA%for roaming,%LOCALAPPDATA%for local).
Permissions and elevation
- Everyday work runs as a standard process. “Run as administrator” (UAC elevation) is needed only for system-wide changes. Do not run your editor or terminal elevated by default.
- Access is controlled by ACLs on files and folders.
icacls <path>shows them. - PowerShell scripts can be blocked by the execution policy. See it with
Get-ExecutionPolicy. A common developer setting isSet-ExecutionPolicy -Scope CurrentUser RemoteSigned.
Developer-focused features
- Windows Terminal is a tabbed host for PowerShell, Command Prompt and WSL (see Command Line Basics).
- WSL is a real Linux environment inside Windows (see Linux on Windows (WSL)).
wingetis the built-in package manager, for examplewinget install Git.Git.- Developer Mode is a setting that, among other things, allows creating symbolic links without elevation.
- Task Manager and Resource Monitor show which process uses CPU, memory, disk or a port. A file that “is in use by another process” is a lock held by one of them.
Processes
Task Manager is the graphical way; the shell is faster and scriptable.
| Purpose | PowerShell | Command Prompt |
|---|---|---|
| List processes | Get-Process (filter: Get-Process node) |
tasklist |
| Stop by name | Stop-Process -Name node |
taskkill /IM node.exe |
| Stop by process ID | Stop-Process -Id 1234 |
taskkill /PID 1234 |
taskkill asks the program to close politely. /F forces it, so unsaved work is lost and the program gets no chance to clean up; use it only when the plain form does not work. Check the process ID first: stopping the wrong process, or a system one, can break your session. To find which process holds a port, see Networking Basics.
Slow builds, line endings and stale PATH
- Antivirus scanning can slow builds. Ask before excluding folders, since that is a security decision.
- Line endings differ from Linux; see Windows vs Linux Differences.
- After installing a tool, open a new terminal: environment changes (such as PATH) are not visible in sessions that were already running. See Environment Variables.
Try it
Open PowerShell and run winget search git, Get-ExecutionPolicy -List and echo $env:LOCALAPPDATA. Then find where your repositories live and check how long the longest path in one of them is.
Common mistakes
- Running the editor or terminal elevated by default.
- Using `taskkill /F` first, which loses unsaved work, or stopping a process without checking its ID.
- Keeping repositories in deeply nested folders where long paths fail.
- Excluding folders from antivirus scanning without asking, since that is a security decision.
Check yourself
- Why keep repositories in a short path such as `C:\repos`?
- What does `Get-ExecutionPolicy` show, and why does it matter?
- How do you stop a process by name in PowerShell, and when is `/F` justified?