Ссылки в контекстном меню Windows 7

В ходе этой статьи мы разберем как добавлять ссылки на избранные программы в контекстное меню рабочего стола Windows или «Моего компьютера».

Каскадное меню в Windows 7

Каскадное меню в описании "Моего компьютера"

Инструкция разделена на 2 части:

1. Создание каскадных меню в контекстном и добавление ярлыков.
2. Добавление функциональности ярлыкам путем их регистрации.

Часть 1. Создание контекстных меню и добавление ярлыков

1. Откройте редактор реестра (напишите «regedit» в строке «Выполнить» или строке поиска меню «Пуск» и нажмите Enter).

2. Перейдите в следующую ветку:

HKEY_CLASSES_ROOT\Directory\Background\shell

Если Вы хотите добавить каскадное меню в контекстое меню «Моего компьютера», тогда перейти нужно в эту ветку:

HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell

3. Теперь необходимо создать новый ключ реестра в разделе «Shell». Нажмите правой кнопкой мыши на ключе «Shell» и выберите «Создать -> Раздел». Дайте ему какое-то оригинальное и неподражаемое имя, например «Menu1» (без кавычек).

4. Теперь выберите только что созданный раздел «Menu1». В правой части окна нам необходимо создать 4 строковых параметра:

MUIVerb
SubCommands
Icon
Position

Параметры Icon и Position Вы можете и не создавать (они опциональны), а вот MUIVerb и SubCommands — обязательны.

MUIVerb — это имя каскадного меню, которое будет отображаться в контекстном меню. Вы можете назвать его как угодно, например, «Приложения», «Браузеры» и т.д.

SubCommands содержит список команд, разделенных точкой с запятой (;). Эти команды будут показаны в каскадном меню. Вы не можете напрямую добавить ярлык приложения. Сначала в этом списке Вам нужно дать команде имя, а после этого зарегистрировать ее согласно инструкции во 2 Части статьи.

5. Давайте проясним насчет строкового параметра «SubCommands».

Предположим, что Вы уже создали каскадное меню «Apps» (переводчику неохота самому делать скрины, поэтому он не перевел это слово), как это описано в пункте 3, и теперь Вы хотите добавить в него ярлыки Notepad (блокнота) и Calculator (калькулятора). В таком случае Вам нужно задать такое значение параметру «SubCommands»:

notepad;calc

Вы можете использовать и команды «Блокнот» и «Калькулятор», но в данном случае нужно будет использовать их во 2 части этой инструкции.

6. Параметр Icon используется для отображения иконки. В нашем примере его значение explorer.exe, поэтому у каскадного меню «Browsers» значок так горячо всеми любимого браузера.

Добавление каскадного меню в Windows 7

7. Параметр «Position» используется для определения позиции каскадного меню в контекстном. По умолчанию это середина контекстного меню, но Вы можете выбрать значения Top (сверху) или Bottom (снизу).

8. Вы можете создать более одного меню, снова пройдя по пунктам 3 и 4.

Часть 2. Добавление функциональности ярлыкам путем их регистрации

Как только Вы добавите ярлыки программ в какскадные меню, Вам необходимо будет их зарегистрировать следующим образом:

1. Перейдите в следующий раздел:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\Shell

2. В этом разделе нам нужно создать новые ключи для каждой из команд, указанных ранее в строковом параметре SubCommands.

В нашем примере мы использовали 2 команды: notepad и calc, поэтому нам нужно создать два ключа в разделе «CommandStore\Shell» с такими же именами.

3. После создания ключа выберите его и в правой части окна редактора реестра задайте параметру Default имя, которые Вы хотите видеть в каскадном меню. Например, введите сюда Notepad или Calculator или любую другую строку.

4. Если Вы также хотите добавить ярлыку иконку, создайте новый строковой параметр с именем icon и установите его значением путь к EXE файлу приложения или любой другой иконке. Например, чтобы показать иконку «блокнота», Вы должны задать параметру Icon значение notepad.exe

5. И теперь последний шаг! В каждом из только что созданных ключей создайте новый ключ и назовите его command.
Выберите его и в правой части окна установите значением Default путь к EXE-файлу необходимой программы. Например, если ярлык должен открывать «блокнот», то для Command должно быть установлено значение notepad.exe

Добавление каскадного меню в Windows 7

PS:

Блокнот является родным Windows-приложением, поэтому Вы можете не указывать полный путь к нему, но если Вы хотите запускать стороннюю программу, то необходимо указать полный путь к ее EXE-файлу.

Автор в оригинальном тексте приводит уже готовые reg-файлы, поэтому можно взять их за основу и сделать это все намного быстрее.

Контекстное меню рабочего стола:

    Windows Registry Editor Version 5.00
 
    [HKEY_CLASSES_ROOT\DesktopBackground\Shell\Menu1]
    «MUIVerb»=«Apps»
    «SubCommands»=«notepad;calc»
    «icon»=«explorer.exe»
 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad]
    @=«Notepad»
    «icon»=«notepad.exe»
 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad\command]
    @=«notepad.exe»
 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc]
    @=«Calculator»
    «icon»=«calc.exe»
 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc\command]
    @=«calc.exe»

Контекстное меню «Мой компьютер»:

    Windows Registry Editor Version 5.00
 
    [HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Menu1]
    «MUIVerb»=«Apps»
    «SubCommands»=«notepad;calc»
    «icon»=«explorer.exe»
 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad]
    @=«Notepad»
    «icon»=«notepad.exe»
 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad\command]
    @=«notepad.exe»
 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc]
    @=«Calculator»
    «icon»=«calc.exe»
 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc\command]
    @=«calc.exe»

Примечание:

Если Вы хотите удалить созданное каскадное меню, просто удалите ключи, созданные в пункте 3 первой части и пункте 2 второй части статьи.

Источник

Символьные ссылки в Windows

Под ссылками в Windows я понимаются ссылки в NTFS. В FAT механизмов ссылок предусмотрено не было.

Ядро Windows поддерживает следующие виды ссылок:

  • Hard Links — жёсткие ссылки, как в *nix. Доступны начиная с Windows NT4;
  • Junction Points — аналог символических ссылок. Доступен начиная с Windows 2000 (NTFS 5);
  • Symbolic Links — символьные ссылки. Доступны начиная с Windows Vista.

Если вы никогда не имели дела с символическими и жёсткими ссылками, но хотели бы узнать о них, советую прочитать отрывок из документации файлового менеджера FAR:

Жесткие и символические связи

На разделах NTFS также можно создавать жесткие (HardLink) связи для файлов и символические (SymLink) для папок с помощью команды Alt-F6.

Жесткие связи применяются для файлов. Символические связи — для папок и дисков.

Жесткие связи

Жесткая связь (HardLink) — это просто еще одна запись в папке для данного файла.

Когда создается жесткая связь, сам файл не копируется физически, а только появляется под еще одним именем или в еще одном месте, а его старые имя и местонахождение остаются нетронутыми. С этого момента жесткая связь неотличима от первоначальной записи в папке. Единственное отличие — то, что для жесткой связи не создается короткое имя файла, поэтому из программ ДОС она не видна.

Когда меняется размер или дата файла, все соответствующие записи в папках обновляются автоматически. При удалении файла он не удаляется физически до тех пор, пока все жесткие связи, указывающие на него, не будут удалены. Порядок их удаления значения не имеет. При удалении жесткой связи в корзину количество связей у файла сохраняется.

FAR умеет создавать жесткие связи, отображать количество жестких связей для каждого файла в отдельной колонке (по умолчанию это последняя колонка в 9-м режиме панелей), а также сортировать файлы по количеству жестких связей.

Жесткие связи поддерживаются в NTFS, начиная с NT 4.0. Создавать жесткие связи можно только на том же диске, на котором расположен исходный файл.

Символические связи

NTFS начиная с версии 5.0 (Windows 2000/XP) поддерживает символические связи (SymLink). Символические связи папок в Windows 2000/XP известны как «directory junctions» — технология, позволяющая отображать любые локальные папки на любые другие локальные папки. Например, если папка D:\SYMLINK указывает на C:\WINNT\SYSTEM32 в качестве своей цели, то программа, обращающаяся к D:\SYMLINK\DRIVERS, будет на самом деле обращаться к C:\WINNT\SYSTEM32\DRIVERS.

FAR умеет создавать символические связи только на локальных дисках, файловая система которых поддерживает эту возможность (Windows 2000/XP/NTFS 5.0). В отличие от жестких связей, символические связи не обязательно должны указывать на тот же диск.

Напрямую делать символические связи на папки CD-ROM нельзя, но можно это ограничение обойти, смонтировав CD-ROM диск на папку NTFS-раздела.

Там говорится только о Hard Links и Junction Points, но этого вполне достаточно. Symbolic Links действуют так же, как и Junction Points, с той разницей, что могут указывать на файлы (и реализованы в Windows по-другому).

Hard Links можно создавать только на файлы, Junction Points — только на директории, Symbolic Links — на файлы и директории. В дальнейшем под «жёсткими ссылками» подразумеваются Hard Links, под «символьными» — Junction Points и Symbolic Links.

Жёсткие ссылки действительны в пределах одного раздела, символьные — могут пересекать границы разделов. В связи с этим символьные ссылки могут поломаться, если структуру разделов поменять.

Не со всем, что поддерживается ядром, умеет нормально работать эксплорер. Будьте осторожны при использовании Junction Points в версиях Windows до Vista. При удалении Junction Point эксплорер может залезть внутрь директории, на которую ссылается Junction Point и поудалять там всё, а затем удалить Junction Point, хотя должен лишь удалить ссылку. Наверняка могут возникнуть проблемы и при перемещении или копировании Junction Point’ов.

Мне неизвестно, нормально ли в версиях Windows до Vista относятся к Junction Points стандартные утилиты типа rmdir.

Дополнительные материалы по теме

Отмечу англоязычную статью, в которой описаны нюансы использования ссылок и некоторые программы, позволяющие с ними работать. Статья устаревшая, так что в ней говорится только о Hard Links и Junction Points (причём на последние в статье нередко ссылаются, как на symbolic links…).

Хорошее описание всех видов ссылок есть ещё в справке по NTFS Links (дополнение для Total Commander).

Софт

Теперь можно перейти к рассмотрению программ для работы со ссылками. Да-да, если вы не пользуетесь FAR, вам понадобятся отдельные программы. Все программы, перечисленные ниже, бесплатны.

Утилиты от Microsoft

Windows >= Vista

В Windows Vista добавили команду

mklink

для создания символьных и жёстких ссылок.

Windows >= 2000
fsutil hardlink create ссылка файл

Создаёт Hard Link на файл (источник).

linkd ссылка директория

Создаёт Junction Point на директорию (источник). Утилита входит в Microsoft Windows Resources Kit.

Расширения для Explorer

NTFS Link интегрируется в Explorer и добавляет во всплывающее меню, появляюшееся после перетаскивания правой кнопкой мыши, пункты «Create junction point» и «Create hard link». Кроме того, она перехватывает вызовы Explorer’а, обеспечивая нормальное перемещение/копирование/удаление созданных ссылок.

NTFS Links (не путать с дополнением для Total Commander) — абсолютно аналогичная программа.

Я рекомендую: Link Shell Extension — аналогичная программа, обладающая расширенным функционалом и очень подробным описанием.

NTFS Links — дополнение для Total Commander

Страница программы. Плагин может запускаться как отдельная программа, вне Total Commander’а.

FAR

Консольный файловый менеджер FAR уже давно поддерживает Hard Links и Junction Points «из коробки». Для создания ссылки используйте сочетание клавиш Alt-F6.

Junction Link Magic

Junction Link Magic — программа с графическим интерфейсом для создания, изменения и модификации Junction Points.

Junction — консольная программа для создания Junction Points

Junction лучше, чем

linkd

, тем, что не нужно тащить весь Resource Kit.

Источник

Windows CMD: Поиск хостов в локальной сети

данная штука полезна, если, например, с ноута нужно вспомнить забытый айпишник свича, и под рукой только стандартные средства. Оптимально можно найти данный айпишник с помощью одной консольной команды:

FOR /L %i IN (1,1,254) DO ping -n 1 \\192.168.0.%i | FIND /i "Reply">>c:\find_local_ip.txt

здесь каждый айпишник для адресов 192.168.0.1-254 пингуется один раз, после чего результат передается команде find, которая при отклике записывает результат в файл find_local_ip.txt

и еще один скрипт (шутка — уходя, гасите всех!) — выключает все компы в заданной подсети:

FOR /L %i in (1,1,254) DO shutdown \\192.168.0.%i

также с выходом всех пользователей (XP):

FOR /L %i in (1,1,254) DO shutdown \\192.168.0.%i /l

тоже самое для 2003 сервера:

FOR /L %i in (1,1,254) DO shutdown /r /m \\192.168.0.%i /d p:2:18

примечание: данная фича может быть запрещена локальной политикой безопасности в разделе прав пользователей, в XP shutdown встроенная команда, если ее нет, то нужно будет скачать.

иногда полезно знать, какие порты открыты на компьютере и используются в данный момент, сделать это тоже можно из командной строки:

посмотреть использующиеся порты —

netstat -an |find /i "listening"

посмотреть порты с установленными соединениями:

netstat -an |find /i "established"

с идентификаторами процессов:

netstat -ao |find /i "listening"

помнится в бесплатном пакете W2K Resource Kit была хорошая утилитка, PULIST, позволяющая посмотреть процесс, использующий порт и использующую его программу, например есть установленное соединение по 80 порту и ни один броузер не запущен, как найти программу, которая использует данный порт —

netstat -no

выдаст, что есть процесс номер 1234, использующий 80 порт,

pulist |find /i "1234"

и покажет, что это идет обновление антивируса.

Найти по MAC адресу IP компьютера

Как-то случайно натыкался на полезные скрипты для определения по мак адресу айпи компьютера:

такой вот коротенький батничек, пингующий группу адресов и записывающий в файлик arp_table.txt

@echo off
if exist arp_table.txt (
if exist arp_table.bak del arp_table.bak
ren arp_table.txt arp_table.bak
)
for /L %%i in (1,1,254) do (
echo 192.168.0.%%i
ping -n 1 192.168.0.%%i>nul
arp -a 192.168.0.%%i>arp_string.tmp
for /F "skip=3 tokens=*" %%j in (arp_string.tmp) do (
echo %%j|find /V "invalid">>arp_table.txt
)
)
del arp_string.tmp

и более тотальный скрипт:

  1. '******************************************************************************
  2. '* File: mac2ip.vbs
  3. '* Purpose: Finds IP of the host with given MAC address.
  4. '* Syntax: cscript mac2ip.vbs /mac:MAC_ADDRESS /ip:IP_BLOCK [/p:pause]
  5. '* Version: 1.0.2
  6. '*
  7. '* Technology: VBSCRIPT,WSH,WMI
  8. '* Requirements: Windows XP or newer (uses Win32_PingStatus WMI class)
  9. '*
  10. '* Authors: 4u3u (asuhovey mtu-net ru)
  11. '*
  12. '******************************************************************************
  13. Option Explicit
  14. 'On Error Resume Next
  15. Dim objShell,strOutput,i,strMAC,objOutput,objAdapter,intPause
  16. Dim strSTime,strIP,strNameSpace,strQuery,colAdapters,PausePattern
  17. Dim colResult,IPPattern,MACPattern,strArpCommand,strOMAC
  18.  
  19. '* Matches valid MAC address
  20. MACPattern = "^([0-9a-f][0-9a-f]-){5}([0-9a-f][0-9a-f])$"
  21. '*Matches valid IP block
  22. IPPattern = "^b((25[0-5]|2[0-4]d|[01]dd|d?d).){3}$"
  23. '*Matches positive integer
  24. PausePattern = "^d+$"
  25.  
  26. '****************************************
  27. 'Parse arguments
  28. '****************************************
  29. strOMAC = WScript.Arguments.Named("mac")
  30. strMAC = Replace(LCase(strOMAC),":","-")
  31. strIP = Wscript.Arguments.Named("ip")
  32. intPause = Wscript.Arguments.Named("p")
  33. If intPause="" Then intPause=1000
  34. If Wscript.Arguments.Count<2 Then
  35. Syntax()
  36. End If
  37. If not ArgVrf(strMAC,MACPattern) Then
  38. WScript.Echo "ERROR: Invalid MAC: '" & strOMAC & "' Check syntax..." & VbCrLf
  39. Syntax()
  40. End If
  41. If not ArgVrf(strIP,IPPattern) Then
  42. WScript.Echo "ERROR: Invalid IP: '" & strIP & "' Check syntax..." & VbCrLf
  43. Syntax()
  44. End If
  45. If not ArgVrf(intPause,PausePattern) Then
  46. WScript.Echo "ERROR: Invalid Pause: '" & intPause & "' Must be positive integer." & VbCrLf
  47. Syntax()
  48. End If
  49.  
  50. ''****************************************
  51. 'Check if script is running by cscript.
  52. 'If not, restart script using cscript.
  53. '****************************************
  54. Set objShell = WScript.CreateObject("WScript.Shell")
  55. If Instr(1, WScript.FullName, "CScript", vbTextCompare) = 0 Then
  56. objShell.Run "cmd /k cscript.exe /nologo """ & WScript.ScriptFullName & """ /mac:" &_
  57. strOMAC & " /ip:" & strIP & " /p:" & intPause, 1, False
  58. WScript.Quit
  59. End If
  60.  
  61. '****************************************
  62. 'Check if given MAC is owned by local host
  63. '****************************************
  64. strNameSpace = "winmgmts:{impersonationLevel=impersonate}//./root/cimv2"
  65. strQuery = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True"
  66. Set colAdapters = GetObject(strNameSpace). ExecQuery(strQuery)
  67. For Each objAdapter in colAdapters
  68. If LCase(Replace(objAdapter.MACAddress,":","-")) = strMAC Then
  69. WScript.Echo strOMAC & " is YOUR MAC address!"
  70. WScript.Quit
  71. End If
  72. Next
  73.  
  74. '****************************************
  75. 'Ping all IPs in range.
  76. '****************************************
  77. strSTime = Now()
  78. strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & strIP
  79. For i = 1 To 254 Step 1
  80. Set colResult = GetObject(strNameSpace). ExecQuery(strQuery & i & "'")
  81. WScript.StdOut.Write "."
  82. If i/51-Int(i/51)=0 Then
  83. WScript.StdOut.WriteLine " " & Int(100*i/254) & "%"
  84. End If
  85. Next
  86. WScript.Echo ". 100%" & VbCrLf & "Ping completed in " & DateDiff("s",strSTime,Now()) & " seconds." & VbCrLf
  87.  
  88. '****************************************
  89. 'Get IP-MAC pair from ARP cache.
  90. '****************************************
  91. WScript.Sleep(intPause)
  92. strArpCommand = "%comspec% /c arp.exe -a | find /i """ & strMAC & """"
  93. Set objOutput=objShell.Exec(strArpCommand).StdOut
  94. WScript.Echo String(56,"=")
  95. i=0
  96. Do While Not objOutput.AtEndOfStream
  97. i=i+1
  98. strOutput = objOutput.ReadLine
  99. WScript.Echo StrOMAC & " is " & RTrim(Left(LTrim(strOutput),15))
  100. Loop
  101. If i=0 Then
  102. WScript.Echo strOMAC & " was NOT FOUND" &_
  103. " on the local network" & VbCrLf &_
  104. "Either host is unreachable or " & strIP &_
  105. "xxx is not" & VbCrLf & "your local network."
  106. End If
  107. WScript.Echo String(56,"=")
  108.  
  109. '****************************************
  110. 'Subroutines
  111. '****************************************
  112. '*Syntax
  113. Sub Syntax()
  114. Dim s
  115. s = "Finds IP of the host with given MAC address." & VbCrLf & VbCrLf
  116. s = s & "SYNTAX: cscript /nologo " & UCase(WScript.ScriptName) &_
  117. " /mac:MAC_ADDRESS /ip:IP_BLOCK [/p:pause]" & VbCrLf & VbCrLf
  118. s = s & " MAC_ADDRESS MAC address to search for. MAC_ADDRESS" & VbCrLf
  119. s = s & " is in XX-XX-XX-XX-XX-XX format. Both" & VbCrLf
  120. s = s & " ':' and '-' delimiters allowed." & VbCrLf
  121. s = s & " IP_BLOCK First three octets of local ip range to" & VbCrLf
  122. s = s & " scan. E.g. '192.168.0.' Only /24 subnets" & VbCrLf
  123. s = s & " are supported in current version." & VbCrLf
  124. s = s & " pause Pause after ping in milliseconds." & _
  125. VbCrLf & " Default is 1000 (1 second)" & VbCrLf & VbCrLf
  126. s = s & "Example:" & VbCrLf
  127. s = s & " cscript /nologo " & UCase(WScript.ScriptName) &_
  128. " /mac:01-23-45-67-89-AB /ip:192.168.0." & VbCrLf
  129. WScript.Echo s
  130. WScript.Quit 1
  131. End Sub
  132.  
  133. '*Arguments validation
  134. Function ArgVrf(arg,pattern)
  135. Dim objRegExp
  136. Set objRegExp = New RegExp
  137. objRegExp.IgnoreCase = true
  138. objRegExp.Pattern = pattern
  139. ArgVrf = objRegExp.Test(arg)
  140. Set objRegExp = Nothing
  141. End Function
  142.  
  143. '****************************************
  144. 'End of script
  145. '****************************************

Коды ответов (ошибок) HTTP сервера

При любом HTTP запросе сервер сначала возвращает код ответа на HTML запрос. Проанализировав этот ответ можно сделать вывод о том, был ли запрос выполнен успешно, или в процессе обработки запроса произошла ошибка.

Коды ответа HTTP сервера могут принадлежать следующим группам:
1xx — Информационный ответ
2xx — Успешная обработка запроса
3xx — Переадресация (редирект)
4xx — Неполный запрос к серверу
5xx — При обработке запроса произошла ошибка

Естественно, что кодов ответа в каждой группе не по 100. Браузер (клиент IE, Opera, Mozilla и т.д.), получая от сервера тот или иной код, сам решает как его интерпретировать. Если код клиенту неизвестен, то как минимум он может определить диапазон кода и повести себя соответствующим образом.

Информационные ответы

100 Continue
Часть запроса принята. Как правило это занчит, что можно отправлять следующую часть запроса.

101 Switching Protocols
Сервер производит переключение протоколов в соответствии с заголовком Upgrade.

Успешная обработка запроса

200 OK
Запрос обработан успешно.

201 Created
Данный код используется когда происходит создание нового URI. Вместе с кодом сервер посылает заголовок Location с адресом нового URI.

202 Accepted
Запрос принят и обрабатывается. В теле ответа как правило содержится дополнительная информация.

203 Non-Authoritative Information
Ответ означает, что информация получена из ненадежного источника (например, с другого сервера).

204 No Content
Запрос обработан, но в ответ ничего не возвращается. Как правило используется если в ответ на запрос не нужно обновлять содержимое документа.

205 Reset Content
Означает, что содержимое документа должно быть сброшено в начальное состояние. Обычно используется при очистке форм ввода данных..

206 Partial Content
При данном ответе возвращается лишь часть данных. Обычно используется если клиент запросил часть данных с использованием заголовка Range.

Переадресация

300 Multiple Choices
Означает, что существует несколько вариантов запрашиваемой страницы. Например, сайт, переведенный на несколько языков.

301 Moved Permanently
Данный ответ означает, что данный документ был перемещен и клиенту следует изменить все ссылки на данный документ его новым местоположением.

302 Moved Temporarily
Документ временно перемещен в другое место.

303 See Other
Данный документ можно найте по другим ссылкам. Список ссылок передан в теле ответа.

304 Not Modified
Данный код ответа возвращается если был запрос lf-Modified-Since, и документ не изменялся с указанной даты.

305 Use Proxy
Доступ к документу должен осуществляться через proxy-сервер, адрес которого указан в Location.

Неполные запросы клиента

400 Bad Request
Ошибка в строке запроса.

401 Unauthorized
Ответ означает, что пользователь не имеет достаточных прав для просмотра документа.

402 Payment Required
Данный код зарезервирован на будущее. Видимо будет означать, что запрошенный документ является платным ресурсом.

403 Forbidden
Запрос не будет выполнен по какой-либо причине.

404 Not Found
Запрашиваемого документа нет на сервере.

405 Method Not Allowed
Означает, что метод, используемый клиентом, не поддерживается.

406 Not Acceptable
Ресурс существует, но не в той форме, что клиент запросил. Например, может различаться язык документа.

407 Proxy Authentication Required
Для Proxy-сервера необходима авторизация.

408 Request Time-out
Сервер разорвал соединение из-за превышенного таймаута.

409 Conflict
Запрос конфликтует с другим запросом.

410 Gone
Данный код означает, что документ был удален с сервера.

411 Length Required
Пропущено необходимое поле в заголовке запроса Content-Length.

412 Precondition Failed
Условие указанное в заголовке не выполняется.

413 Request Entity Too Large
Слишком большое тело запроса.

414 Request-URI Too Long
Слишком длинный URI в запросе.

415 Unsupported Media Type
Сервер не поддерживает указанный формат данных.

Ошибки сервера

500 Internal Server Error
Внутренняя ошибка сервера. Например, ошибка при выполнении скрипта.

501 Not Implemented
Недопустимое действие.

502 Bad Gateway
Недопустимый ответ с другого ресурса.

503 Service Unavailable
Данный код означает, что указанный сервис временно недоступен.

504 Gateway Time-out
Превышен таймаут ожидания от другого ресурса

505 HTTP Version not supported
Данная версия протокола HTTP не поддерживается сервером.