windows.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sat, 10 Feb 2018 01:28:53 +0200
changeset 2227 1e9323e7ec88
parent 2213 0ba47cfd796b
child 2228 837f1337c59b
permissions -rw-r--r--
Removed files: I don't longer have interest on topic.

.. -*- coding: utf-8; -*-

=============
 Windows OS.
=============
.. contents::
   :local:

Determining windows version
===========================

To show GUI dialog with Windows build/version information type::

  <Win+R> winver <Enter>
  <Win+Break>

or run::

  cmd> winver

``cmd`` has built-in command ``ver``.

For Win 2000 and upper check registry key::

  cmd> reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion

To check 32/64-bit OS use PROCESSOR_ARCHITECTURE env var (it has such values:
x86, AMD64, IA64).

Full info about Windows edition available from this .vbs::

  cmd> slmgr -dli

Windows history.
================

  http://windows.microsoft.com/en-us/windows/history
                A history of Windows

Windows update
==============

To find updates and drivers visit (подлинность Windows not checked):

  http://catalog.update.microsoft.com/

You can search driver by keywords from Device Manager like::

  VEN_10DE DEV_0247
  VID_22B8 PID_2A62

After obtaining ``.cab`` file for driver unpack files::

  cmd> expand FILE.cab -F:* c:\tmp\dir

and use that directory in "Update driver" dialog.

Also you can find updates on:

  http://www.microsoft.com/downloads/ru-ru/default.aspx

Updates that reset pirate copy of Windows: КВ971033.

List of installed updates with full information::

  cmd> wmic qfe
  power# get-hotfix

List only hotfix id::

  cmd> wmic qfe get hotfixid
  power# get-hotfix -id KB...,KB...

http://catalog.update.microsoft.com/v7/site/faqgeneric.aspx
  Microsoft Update Catalog FAQ
https://support.microsoft.com/en-us/kb/323166
  How to download updates that include drivers and hotfixes from the Windows
  Update Catalog.

Check system files integrity.
=============================
::

  cmd> sfc /Scannow

To complete repair you may need original installation CD (you can mount it from
.iso image for example with DemonTools). Look to ``c:/Windows/Logs/CBS/CBS.log``
for errors and warnings.

Works starting from Windows 2000.

See:

 * http://support.microsoft.com/kb/929833
 * http://support.microsoft.com/kb/222471
 * http://support.microsoft.com/kb/310747/ru

Repair boot.
============

If you only damage boot sector of master or system partition boot from Windows
XP installation CD, enter to recovery console and run::

  cmd> fixboot
  cmd> fixmbr

See:

 * http://support.microsoft.com/kb/307654/ru

Automatically connect to shared resource.
=========================================

Add to autorun such .bat file::

  net use x: \\server\share /user:username password

See:

 * http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/net_use.mspx

Activate Windows.
=================

Activate Windows from command line::

  cmd> slmgr -ipk YGR45-THIS9-WONT5–0WORK-D7667

Reset the evaluation period/licensing status and activation state of the
machine::

  cmd> slmgr -rearm

Check activation::

  cmd> slmgr /xpr

See:

  http://www.microsoft.com/genuine/selfhelp/XPPkuinst.aspx?sGuid=bab9e103-6365-44dd-9337-93f0cd9dd4b7&displaylang=en
    Windows Product Key Update Tool Instructions

Activate Windows XP.
--------------------

Replace %WINDIR%/system32/winlogon.exe with valid in Safe Mode and run Windows Product Key Update
Tool.

Windows images.
===============

  http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2fcde6ce-b5fb-4488-8c50-fe22559d164e
    Windows XP Service Pack 3 - ISO-9660 CD Image File

hosts file.
===========

Edit ``%windir%/system32/Drivers/etc/hosts``. Under Windows 7/8/10 you need to
run editor with "Run as administrator".

Access to Samba from Vista/7.
=============================

By default, you cannot authenticate and share files to and from Mac OS X or
Linux Samba due to a well known authentication method turned off by default.
To enable this,

Only for Windows Vista Ultimate/Business/Enterprise Editions.
-------------------------------------------------------------

Goto Start->Run and open gpedit.msc or secpol.msc

Select Continue on the User Account Control prompt. This will launch the Group
Policy Object Editor for the Local Computer Policy.

In the Group Policy Object Editor, expand:

-> Computer Configuration
-> Windows Settings
-> Security Settings
-> Local Policies
-> Security Options

Open the "Network security: LAN Manager authentication level" policy and
change the Security Setting to:

Send LM & NTLM - use NTLMv2 session security if negotiated

Windows Vista Home Edition.
---------------------------

Since Windows Vista Home Edition does not feature the Group Policy Editor, you
may do the following to enable this feature:

Goto Start->Run-> and type regedit.

Select Continue on the User Account Control prompt.

Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

Create the following DWORD value (if it doesn't exist): LmCompatibilityLevel

And set its value to: 1

Map dir to disk.
================

To create::

  cmd> subst [to-disk: [from-disk:]path]

To remove::

  cmd> subst disk: /d

Standard scripts.
=================

:``msconfig``: System Configuration Utility, you can disable services registered
               at boot.
:``regedit``: Registry Editor.
:``services.msc``: Service management.
:``compmgmt.msc``: Computer management.
:``devmgmt.msc``: Device manager.
:``diskmgmt.msc``: Disk management.
:``msinfo32``: System Information.
:``perfmon.msc``: Performance monitor.

These scripts can be invoked via ``Win+R``::

  dfrg.msc - Disk defrag
  eventvwr.msc - Event viewer
  fsmgmt.msc - Shared folders
  gpedit.msc - Group policies
  lusrmgr.msc - Local users and groups
  secpol.msc - Local security settings
  win.ini - windows loading information(also system.ini)
  winver - Shows current version of windows
  command - Opens command prompt
  control fonts - Fonts Folder
  control printers - Printers Folder

  appwiz.cpl - Add & Remove Programs
  timedate.cpl - Date/Time Properties
  desk.cpl - Display Properties
  inetcpl.cpl - Internet Options
  mmsys.cpl - Sound Settings
  sysdm.cpl - System Properties
  password.cpl - Password Options
  main.cpl - Mouse and Keyboard Options

``.cpl`` scripts can be run from command line as::

  cmd> Rundll32 Shell32.dll,Control_RunDLL
  cmd> Rundll32 Shell32.dll,Control_RunDLL Mmsys.cpl,,0

Path
====

Max path length
---------------

260 chars. Use MAX_PATH macros from 'windows.h'.

Allowed characters
------------------

Not allowed:
* characters from 0 to 31
* ``<`` (less than)
* ``>`` (greater than)
* ``:`` (colon)
* ``"`` (double quote)
* ``/`` (forward slash)
* ``\`` (backslash)
* ``|`` (vertical bar or pipe)
* ``?`` (question mark)
* ``*`` (asterisk)

http://msdn.microsoft.com/en-us/library/aa365247.aspx
  Naming Files, Paths, and Namespaces.

Memory
======

  http://msdn.microsoft.com/en-us/library/ff542275%28v=VS.85%29.aspx
                Boot Parameters to Configure DEP and PAE

PAE
---

All 32-bit Windows XP support only 4 GiB RAM. To enable PAE (Physical Address
Extension) edit ``c:\boot.ini``, add option ``/pae``::

  multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MS Windows XP Prof" /fastdetect /pae

http://msdn.microsoft.com/en-us/library/ff557168.aspx
  ``/pae`` option.
http://www.microsoft.com/whdc/system/platform/server/pae/paedrv.mspx
  PAE support.

NX
--

NX (no execute) in Windows realised in Data Execution Prevention (DEP)
technology.

On 64-bit processes, DEP is enabled by default and cannot be disabled. For
32-bit Windows DEP is supported in Windows Server 2003 with SP1, Windows XP
with SP2, Windows Vista, and later versions of Windows.

To enable NX on 32-bit Windows edit 'c:\boot.ini', add option
'/noexecute=...' (alwayson/optout/optin/alwaysoff)::

  multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MS Windows XP Prof" /fastdetect /noexecute=alwayson

To see current DEP status run::

  cmd> wmic OS Get DataExecutionPrevention_Available
  cmd> wmic OS Get DataExecutionPrevention_SupportPolicy
  cmd> wmic OS Get DataExecutionPrevention_Drivers

  http://msdn.microsoft.com/en-us/library/ff557134%28VS.85%29.aspx
                /noexecute parameter
  http://support.microsoft.com/kb/912923
                How to determine that hardware DEP is available and configured on your computer

Windows ISO images.
===================

  http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=25129
                Windows XP Service Pack 3 - ISO-9660 CD Image File

Life cycle.
===========

  http://www.microsoft.com/windows/lifecycle/servicepacks.mspx
                Windows Service Pack Road Map
  http://www.microsoft.com/windows/lifecycle/default.mspx
                Windows Life-Cycle Policy
  http://support.microsoft.com/gp/lifeselect
                Life-Cycle Policy by product
  http://support.microsoft.com/lifecycle/search
                Microsoft Product Lifecycle Search. Type product name into
                search box (like "Windows 95", "Windows XP", "Windows Server
                2003", etc)!

NTFS junction points.
=====================

To craete use 'junction.exe' from Mark Russinovich or 'linkd.exe' from
Microsoft Windows 2000 Resource Kit.

'junction.exe' included with Sysinternals suite.

  cmd> md c:\Program-Files
  cmd> junction c:\Program-Files "c:\Program Files"

  http://technet.microsoft.com/en-gb/sysinternals/bb896768.aspx
                Junction v1.05, Published: July 24, 2007
  http://support.microsoft.com/?kbid=205524
                How to create and manipulate NTFS junction points
  http://en.wikipedia.org/wiki/NTFS_junction_point
                NTFS junction point

Microsoft Windows 2000 Resource Kit.
====================================

  http://support.microsoft.com/kb/927229
                Windows 2000 Resource Kit Tools for administrative tasks
                separate tools downloads

Microsoft security tools.
=========================

  http://www.microsoft.com/downloads/details.aspx?FamilyID=CD057D9D-86B9-4E35-9733-7ACB0B2A3CA1&displayLang=en

  http://www.microsoft.com/downloads/details.aspx?FamilyID=B1E76BBE-71DF-41E8-8B52-C871D012BA78&displayLang=en
                Microsoft Baseline Security Analyzer 2.1.1 (for IT
                Professionals)

  http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=4a2346ac-b772-4d40-a750-9046542f343d&displayLang=en
                Enhanced Mitigation Evaluation Toolkit

  http://blogs.technet.com/b/srd/archive/2009/10/27/announcing-the-release-of-the-enhanced-mitigation-evaluation-toolkit.aspx
                Announcing the release of the Enhanced Mitigation Evaluation
                Toolkit (old version 1.0)

  http://blogs.technet.com/b/srd/archive/2010/07/28/announcing-the-upcoming-release-of-emet-v2.aspx

Enable/Disabling UAC.
=====================

To disable UAC on the computer, you must be able to log on with or provide the
credentials of a member of the local Administrators group.

Starting with Windows 7, UAC is disabled by following these steps:

  1. On the Start menu, type "UAC" and then click Change User Account settings.
  2. Move the slide bar to the bottom (Never Notify) and then click OK.

On Windows Vista and Windows Server 2008, UAC is disabled by following these steps:

  1. Start Control Panel and double-click User Accounts.
  2. In the User Accounts tasks window, click Turn User Account Control on or off.
  3. Clear the Use User Account Control (UAC) to help protect your computer check box, and then click OK.

  http://windows.microsoft.com/en-US/windows-vista/Turn-User-Account-Control-on-or-off
                Turn User Account Control on or off

Fix file association.
=====================

Check current association::

  $ cmd /c assoc | grep -i "^\.mp3"
  .mp3=mp3file

Get list of all available commands::

  $ cmd /c ftype
  ...
  AIMP.mp3="C:\Program Files\AIMP2\AIMP2.exe" "%1"
  ...

and select one on them::

  $ cmd /c assoc .mp3=AIMP.mp3

Clean up Windows system directories
===================================

Run ``cleanmgr.exe``.

Disable hibernation::

  powercfg /hibernate off

On Windows 10 use compaction (compressing Windows bloatware). It frees about 2 GiB::

  Compact.exe /CompactOS:always

Clean up WinSXS directory (from admin permission)::

  DISM /online /Cleanup-Image /SpSuperseded
  DISM /online /Cleanup-Image /StartComponentCleanup /ResetBase

You can safely remove SP restore files::

  %Systemroot%\$NtServicePackUninstall$

Also check such directories::

  %SYSTEMDRIVE%\Program Files\Common Files
  %SYSTEMDRIVE%\Documents and Settings\USER\Application Data
  %SYSTEMDRIVE%\Documents and Settings\USER\Local Settings

http://support.microsoft.com/kb/290402
  HOW TO: Remove the Service Pack Restore Files and Folders in Windows
http://support.microsoft.com/kb/253597
  Automating Disk Cleanup Tool in Windows
https://support.microsoft.com/en-us/help/17421/windows-free-up-drive-space
  Tips to free up drive space on your PC.
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/clean-up-the-winsxs-folder
  Clean Up the WinSxS Folder.
https://support.microsoft.com/en-us/help/2795190/how-to-address-disk-space-issues-that-are-caused-by-a-large-windows-co
  How to address disk space issues that are caused by a large Windows component store (WinSxS) directory.

Schedule Tasks in Windows
=========================

List registered of task::

  $ schtasks /query

Create task::

  $ schtasks /create /tn %TASK_NAME% /ru %ROOT% /sc daily /st 23:00:00 /tr "rundll32.exe user32.dll,LockWorkStation"

``/sc`` can be one of::

  MINUTE HOURLY DAILY WEEKLY MONTHLY ONCE ONSTART ONLOGON ONIDLE

Delete task::

  schtasks /delete /tn %TASK_NAME% /f

Change NTFS permissions
=======================

``icacls`` allow option:

* ``/c`` - Continues the operation despite any file errors. Error messages will
  still be displayed.
* ``/t`` - Apply recursively.
* ``/l`` - Performs the operation on a symbolic link versus its destination.
* ``/q`` - Suppresses success messages.

Permissions description:

* ``f`` - full control
* ``CI`` = Container Inherit - This flag indicates that subordinate containers will
  inherit this ACE.
* ``OI`` = Object Inherit - This flag indicates that subordinate files will inherit
  the ACE.

To review current permissions::

  cmd> icacls %dir% /t

.. note:: To get brief view of permissions use ``AccessEnum`` utility from
          Sysinternals.

Recursively change the owner of all matching files to the specified user::

  cmd> icacls %dir% /setowner %user% /t /c

or simply::

  cmd> takeown /r /f %file%

.. note:: Sometimes you don't have enough permssion to change permission. Run
          commands from administrator shell.

Recursively grand full access for everyone::

  cmd> icacls %dir% /t /grant:r %user%:(f)
  cmd> icacls %dir% /t /grant:r *S-1-1-0:(f)

Somtimes it fail due to permission inheritance, try to strip them::

  cmd> icacls %dir% /inheritance:r /t /grant:r %user%:(f)

Remove all permissons from file (first reset to inherited, then remove inherited)::

  cmd> icacls %FILE% /reset
  cmd> icacls %FILE% /inheritance:r

Read file attributes::

  cmd> attrib %FILE%

Set/remove attributes (``/s`` - recursive)::

  cmd> attrib +r -h %DIR% /s

https://technet.microsoft.com/en-us/library/cc753525.aspx
  Icacls.
http://support.microsoft.com/kb/919240
  The ``Icacls.exe`` utility is available for Windows Server 2003 with Service Pack 2.
https://technet.microsoft.com/en-us/library/2009.07.geekofalltrades.aspx
  Geek of all Trades Setting Permissions from the Command Line.
https://technet.microsoft.com/en-us/library/bb490868.aspx
  Attrib utility.

User management
===============

List available users::

  cmd> net user
  cmd> wmic useraccount list brief

List available groups::

  cmd> net localgroup

List available users in group::

  cmd> net localgroup %GROUP%
  cmd> net localgroup Administrators
  cmd> net localgroup Users

Current logged user::

  cmd> whoami

Create new user by supplying password argument::

  cmd> net user /ADD %USER% %PASS%

Create new user by entering password in prompt::

  cmd> net user /ADD %USER% *

Well-known security identifiers (SID).
======================================

Pring SIDs of groups::

  cmd> whoami /groups

Print current user SID::

  cmd> whoami /user

Get name from SID::

  cmd> PsGetsid.exe S-1-0-0

Get SID from name::

  cmd> PsGetsid.exe "NT AUTHORITY\System"
  cmd> PsGetsid.exe "NT AUTHORITY\LocalService"

Well known users/groups:

``S-1-0-0``
  Nobody. A group with no members. This is often used when a SID
  value is not known.
``S-1-1-0``
  World/Everyone. A group that includes all users.
``S-1-2-0``
  Local. A group that includes all users who have logged on locally.
``S-1-2-1``
  Console Logon. A group that includes users who are logged on to the physical
  console.
``S-1-3-0``
  Creator Owner ID. A security identifier to be replaced by the
  security identifier of the user who created a new object. This
  SID is used in inheritable ACEs.
``S-1-3-1``
  Creator Group ID. A security identifier to be replaced by the
  primary-group SID of the user who created a new object. Use this
  SID in inheritable ACEs.
``S-1-5-6``
  Service. A group that includes all security principals that have
  logged on as a service. Membership is controlled by the
  operating system.
``S-1-5-7``
  Anonymous. A group that includes all users that have logged on
  anonymously. Membership is controlled by the operating system.
``S-1-5-18``
  ``NT AUTHORITY\SYSTEM``
``S-1-5-19``
  ``NT AUTHORITY\LocalService``
``S-1-5-32-544``
  Administrators group.
``S-1-5-32-545``
  Users group.
``S-1-5-32-546``
  Guests. By default, the only member is the Guest account. The
  Guests group allows occasional or one-time users to log on with
  limited privileges to a computer's built-in Guest account.
``S-1-5-32-547``
  Power Users. Power users can create local users and groups;
  modify and delete accounts that they have created; and remove
  users from the Power Users, Users, and Guests groups. Power
  users also can install programs; create, manage, and delete
  local printers; and create and delete file shares.

See:

https://msdn.microsoft.com/en-us/library/aa379649.aspx
  Well-known SIDs
https://support.microsoft.com/en-us/help/243330/
  Well-known security identifiers in Windows operating systems.
https://msdn.microsoft.com/en-us/library/ms686005.aspx
  Service User Accounts.
http://en.wikipedia.org/wiki/Security_Identifier
  Security Identifier

Converting SID to names and inside out.
=======================================

Use 'PsGetSid' utility from Sysinternals::

  cmd> PsGetSid S-1-3-0
  cmd> PsGetSid "\NULL SID"

Gathering info about Windows.
=============================
::

  cmd> systeminfo

From ``Win+R``::

  helpctr.exe -mode hcp://system/sysinfo/msinfo.xml

or by::

  cmd> %SystemRoot%\pchealth\helpctr\binaries\helpctr.exe -mode hcp://system/sysinfo/msinfo.xml

Automatically logon to Windows
==============================
::

  cmd# control userpasswords2

Time synchronization in Windows
===============================

Most of registry tweaks have no effect or inconsistent on Windows time
scheduling.

Better way to control time sync is via Windws Task with commands (start service
and force update)::

  %windir%\system32\sc.exe  start w32time task_started
  %windir%\system32\w32tm.exe  /resync

https://www.pretentiousname.com/timesync/
  Make Windows synchronize time more often.
https://superuser.com/questions/529367/automatically-sync-windows-time-more-often-than-default
  Automatically sync Windows time more often than default.
https://superuser.com/questions/603120/how-to-update-windows-8-clock-with-the-internet-every-time-i-boot-the-system
  How to update Windows 8 clock with the internet every time I boot the system?
https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/get-started/windows-time-service/windows-time-service-tools-and-settings
  Windows Time Service Tools and Settings.
https://time.is/
  Online in browser service to find time difference.

Format drive.
=============

Replace with own disk letter::

  cmd# format E: /q /fs:ntfs

See:

  http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/format.mspx
                Formats the disk in the specified volume to accept Windows
                files.

Login/logout user scripts
=========================

``%SystemRoot%\system32\GroupPolicy\User\Scripts\Logoff`` and
``%SystemRoot%\system32\GroupPolicy\User\Scripts\Logon``.

hosts file
==========

``%SystemRoot%\System32\drivers\etc\hosts``.

Path to directory defined by registry key::

  bash# cat /proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/tcpip/Parameters/DataBasePath
  %SystemRoot%\System32\drivers\etc