4

проблема

Если я запускаю файл .cmd из cmd.exe он работает нормально. Однако, если я запускаю его из Start menu / Run Строка запуска , он открывается в Notepad++, моем редакторе. (отредактировал я это установил в течение многих лет, не обновлял это недавно. Тем не менее, это явление с .cmd только недавно началось.)

Оба раза я использую полный абсолютный путь. Я использую Windows 7 x64.

реестр

Для моей команды HKLM/Software/Classes/cmdfile/shell/open/command (Default) задано значение "%1" %* а для .cmd (Default) cmdfile в HKLM и HKCU а в cmdfile нет HKCU ,

Однако другие ключи, которые я не проверял / не понимали их значения или значения, в частности, я не знаю простого способа следовать значениям clsid и знать, что они означают как данный ключ.

контекстное меню

Если я нажму правой кнопкой мыши на .cmd жирный текст это его имя (редактировать) говорит " Открыть ". Но даже отсюда, если я нажму на open, он откроется в notepad++, моем текстовом редакторе.

Значок (отредактированный) Если я захожу в папку в проводнике, то это значок Notepad++.

вопрос

Почему строка Run ведет себя не так, как командная строка?

Как я могу восстановить мои .cmd для запуска из диалога Run?

3 ответа3

6

Сделайте резервную копию реестра.

После этого вы должны удалить любые значения с помощью «Notepad ++» под следующим ключом:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.cmd

Единственные ключи у меня есть:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.cmd]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.cmd\OpenWithList]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.cmd\OpenWithProgids]
"cmdfile"=hex(0):
1

В Windows 7, если вам не нужно редактировать реестр, выберите "Пуск"> "Панель управления"> "Программы по умолчанию"> "Связать тип файла или протокол с определенной программой". (Часто занимает много времени, чтобы загрузить!) «.cmd» должен быть связан с "Windows Command Script". Поскольку это, очевидно, не так, нажмите кнопку "Изменить программу", перейдите к \windows \system32 \cmd.exe и выберите его, установите флажок "всегда использовать", и это должно исправить связь.

Или вы можете сделать это непосредственно в реестре, но расположение будет в HKEY_CLASSES_ROOT, где установлены ассоциации файлов. Файлы CMD по умолчанию связаны с "постоянным текстовым обработчиком". По умолчанию это:

======= для.Расширение CMD ===========

REGEDIT4

[HKEY_CLASSES_ROOT\.cmd]
@="cmdfile"

[HKEY_CLASSES_ROOT\.cmd\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"

====== для CMDFILE типа ==============

REGEDIT4

[HKEY_CLASSES_ROOT\cmdfile]
@="Windows Command Script"
"EditFlags"=hex:30,04,00,00
"FriendlyTypeName"=hex(2):40,25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,\
  74,65,6d,33,32,5c,61,63,70,70,61,67,65,2e,64,6c,6c,2c,2d,36,30,30,33,00

[HKEY_CLASSES_ROOT\cmdfile\DefaultIcon]
@=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,33,32,5c,69,\
  6d,61,67,65,72,65,73,2e,64,6c,6c,2c,2d,36,38,00

[HKEY_CLASSES_ROOT\cmdfile\shell]

[HKEY_CLASSES_ROOT\cmdfile\shell\edit]

[HKEY_CLASSES_ROOT\cmdfile\shell\edit\command]
@=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,33,32,5c,4e,\
  4f,54,45,50,41,44,2e,45,58,45,20,25,31,00

[HKEY_CLASSES_ROOT\cmdfile\shell\open]
"EditFlags"=hex:00,00,00,00

[HKEY_CLASSES_ROOT\cmdfile\shell\open\command]
@="\"%1\" %*"

[HKEY_CLASSES_ROOT\cmdfile\shell\print]

[HKEY_CLASSES_ROOT\cmdfile\shell\print\command]
@=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,33,32,5c,4e,\
  4f,54,45,50,41,44,2e,45,58,45,20,2f,70,20,25,31,00

[HKEY_CLASSES_ROOT\cmdfile\shell\runas]
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\cmdfile\shell\runas\command]
@=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,33,32,5c,63,\
  6d,64,2e,65,78,65,20,2f,43,20,22,25,31,22,20,25,2a,00

[HKEY_CLASSES_ROOT\cmdfile\shell\runasuser]
@="@shell32.dll,-50944"
"Extended"=""
"SuppressionPolicyEx"="{F211AA05-D4DF-4370-A2A0-9F19C09756A7}"

[HKEY_CLASSES_ROOT\cmdfile\shell\runasuser\command]
"DelegateExecute"="{ea72d00e-4960-42fa-ba92-7792a7944c1d}"

[HKEY_CLASSES_ROOT\cmdfile\ShellEx]

[HKEY_CLASSES_ROOT\cmdfile\ShellEx\ContextMenuHandlers]
@="Compatibility"

[HKEY_CLASSES_ROOT\cmdfile\ShellEx\ContextMenuHandlers\Compatibility]
@="{1d27f844-3a1f-4410-85ac-14651078412d}"

[HKEY_CLASSES_ROOT\cmdfile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

[HKEY_CLASSES_ROOT\cmdfile\ShellEx\PropertySheetHandlers]

[HKEY_CLASSES_ROOT\cmdfile\ShellEx\PropertySheetHandlers\ShimLayer Property Page]
@="{513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}"

[HKEY_CLASSES_ROOT\cmdfile\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@="{1531d583-8375-4d3f-b5fb-d23bbd169f22}"
1

Похоже, вы как-то изменили свою файловую ассоциацию по умолчанию для файлов .cmd.

Перейдите к любому файлу .cmd:

  • Щелкните правой кнопкой мыши и выберите свойства
  • Где вы видите "Открывается с" -> Нажмите
  • Перейдите к% Systemroot%\System32\
  • Выберите cmd.exe

Ваша ассоциация по умолчанию теперь должна быть исправлена!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .