Случайно удален файл ассоциации .exe в скрипте Nullsoft?
372
audiFanatic
Я случайно изменил ассоциацию файлов `.exe со следующим скриптом Nullsoft (сгенерированным VBConverter )
# MyProg-Standard.nsi installation script # Automatically generated by VB6Converter by David Nuttall # VB6Converter was compiled on 15/02/08 # Name "MyProg-Standard-Setup" OutFile "MyProg-Standard-Setup.exe" RequestExecutionLevel admin SetCompress auto SetCompressor /SOLID /FINAL Lzma WindowIcon on AutoCloseWindow false SetDatablockOptimize on CRCCheck on InstProgressFlags smooth SetDateSave on AllowSkipFiles on SetOverwrite IfNewer InstallDir "$ProgramFiles\MyProg" !include Library.nsh Page Directory Page Components Page InstFiles Var ALREADY_INSTALLED Var Version Section "MyProg-Standard" SectionIn 1 RO ;LogSet on # Needs special build of NSIS to actually work. # Change the registry structure to reflect the directory structure you are using. ReadRegDWord $Version HKLM "Software\VBGenerator\MyProg-Standard" Version IfErrors new_installation StrCpy $ALREADY_INSTALLED 1 new_installation: SetOutPath "$InstDir" File /a "Support\license.txt" !insertmacro InstallLib DLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\mesa.dll" "$SysDir\mesa.dll" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\cwui.ocx" "$SysDir\cwui.ocx" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\MSWINSCK.OCX" "$SysDir\MSWINSCK.OCX" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\cwanalysis.ocx" "$SysDir\cwanalysis.ocx" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\comct332.ocx" "$SysDir\comct332.ocx" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\MSCOMM32.OCX" "$SysDir\MSCOMM32.OCX" "$SysDir" !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED \ "Support\RICHED32.DLL" "$SysDir\RICHED32.DLL" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\RICHTX32.OCX" "$SysDir\RICHTX32.OCX" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\mscomct2.ocx" "$SysDir\mscomct2.ocx" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\MSCOMCTL.OCX" "$SysDir\MSCOMCTL.OCX" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\comdlg32.ocx" "$SysDir\comdlg32.ocx" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\TABCTL32.OCX" "$SysDir\TABCTL32.OCX" "$SysDir" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\USB_DLL.dll" "$SysDir\USB_DLL.dll" "$SysDir" SetOutPath "$InstDir" File /a "Support\MyProg_NXPUSB.exe" # Put shortcuts in the start menu CreateDirectory "$SMPrograms\MyProg" CreateShortCut "$SMPrograms\MyProg\MyProg.lnk" "$InstDir\MyProg_NXPUSB.exe" WriteRegDWord HKLM "Software\VBGenerator\MyProg-Standard" Version 1 WriteUninstaller "$InstDir\uninstaller.exe" CreateShortCut "$SMPrograms\Uninstall MyProg-Standard.lnk" "C:\svn\projects\Standard_MyProg_NXPUSB\GUI\REV_M_Hardware\SWD0015-XXX\Package (3)\uninstaller.exe" # Set file extension to open the program. WriteRegStr HKCR ".exe" "" "MyProg-Standard file" WriteRegStr HKCR "MyProg-Standard file" "" "MyProg-Standard Document" WriteRegStr HKCR "MyProg-Standard file\DefaultIcon" "" "$InstDir\MyProg_NXPUSB.exe,1" WriteRegStr HKCR "MyProg-Standard file\shell\open\" "" "&Open" WriteRegStr HKCR "MyProg-Standard file\shell\open\command" "" '"$InstDir\MyProg_NXPUSB.exe" "$$1"' # Add uninstaller information to registry. WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProg-Standard" "DisplayName" "MyProg-Standard" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProg-Standard" "UninstallString" '"$InstDir\uninstaller.exe"' WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProg-Standard" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProg-Standard" "NoRepair" 1 SectionEnd Section Uninstall # Remove file extension to open the program. DeleteRegKey HKCR ".exe" DeleteRegKey HKCR "MyProg-Standard file" Delete /RebootOk "$SMPrograms\MyProg\MyProg.lnk" UnRegDLL "$InstDir\MyProg_NXPUSB.exe" Delete /RebootOk "$InstDir\MyProg_NXPUSB.exe" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\USB_DLL.dll" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\TABCTL32.OCX" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\comdlg32.ocx" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\MSCOMCTL.OCX" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\mscomct2.ocx" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\RICHTX32.OCX" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\RICHED32.DLL" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\MSCOMM32.OCX" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\comct332.ocx" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\cwanalysis.ocx" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\MSWINSCK.OCX" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\cwui.ocx" !insertmacro UnInstallLib REGDLL SHARED REBOOT_PROTECTED "$SysDir\mesa.dll" Delete /RebootOk "$InstDir\license.txt" Delete /RebootOk "$SMPrograms\\Uninstall .lnk" RMDir "$SMPrograms\" DeleteRegKey HKLM "Software\VBGenerator\MyProg-Standard" SetOutPath "\" ;Change to root directory to allow the next step to succeed. RmDir /RebootOk "$INSTDIR" SectionEnd Section "-Install VB6 runtimes" ;Add code here that sets $ALREADY_INSTALLED to a non-zero value if" ;the application is already installed. For example: IfFileExists "C:\svn\projects\Standard_MyProg_NXPUSB\GUI\REV_M_Hardware\SWD0015-XXX\Package (3)\MyProg-Standard.nsi.exe" 0 new_installation2 StrCpy $ALREADY_INSTALLED 1 new_installation2: !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED \ "Support\msvbvm60.dll" "$SYSDIR\msvbvm60.dll" "$SYSDIR" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\olepro32.dll" "$SYSDIR\olepro32.dll" "$SYSDIR" !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\comcat.dll" "$SYSDIR\comcat.dll" "$SYSDIR" !insertmacro InstallLib DLL $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\asycfilt.dll" "$SYSDIR\asycfilt.dll" "$SYSDIR" !insertmacro InstallLib TLB $ALREADY_INSTALLED REBOOT_PROTECTED \ "Support\stdole2.tlb" "$SYSDIR\stdole2.tlb" "$SYSDIR" SectionEnd Section "-un.Uninstall VB6 runtimes" !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\msvbvm60.dll" !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\oleaut32.dll" !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\olepro32.dll" !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\comcat.dll" !insertmacro UnInstallLib DLL SHARED NOREMOVE "$SYSDIR\asycfilt.dll" !insertmacro UnInstallLib TLB SHARED NOREMOVE "$SYSDIR\stdole2.tlb" SectionEnd
Я полагаю, что когда я получил запрос на сопоставление файлов в инструменте VB Converter, я просто вставил туда файл .exe, не совсем понимая, о чем он просил (тем более, что моя программа не имеет ассоциаций файлов), и это результат, Я думаю, что виновником являются следующие несколько строк:
# Remove file extension to open the program. DeleteRegKey HKCR ".exe" DeleteRegKey HKCR "MyProg-Standard file" Delete /RebootOk "$SMPrograms\MyProg\MyProg.lnk"
С учетом сказанного, я попробовал следующие решения.
- Я попробовал решение, представленное здесь, которое, казалось бы, не имело никакого эффекта.
- Я попробовал пару решений здесь . Решение EthanAD мне тоже ничего не дало. Тем
assoc .exe=exefile
не менее, запуск работал для меня на одном компьютере (тот, на котором я тестировал установку). Но он не работал на компьютере, который скомпилировал скрипт NSIS и тот, на котором запущена моя среда разработки. На этом, пытаясь решить проблему, я считаю, что выбрал Notepad в качестве программы по умолчанию для открытия.exe
файлов в спешке, чтобы решить проблему. Теперь каждая программа открывается с помощью Блокнота (я даже сам открыл Блокнот с помощью Блокнота). Запускassoc .exe=exe
на этом ПК не имеет никакого эффекта, даже если он работаетassoc .exe
иftype exefile
возвращает правильные результаты (.exe=exefile
иexefile="%1" %*
соответственно).
Может кто-нибудь помочь мне восстановить функциональность Windows по умолчанию в отношении файлов EXE?
--- РЕДАКТИРОВАТЬ ---
Чтобы уточнить, это не дубликат этого вопроса, я пробовал (как администратор), и он ничего не сделал.
@ Ramhound Я уже сделал это. Я на самом деле получил шаги, которые я пытался из этого вопроса. Однако я связался с сайтом Microsoft, поэтому предпринятые шаги не спутали с другими ответами.
audiFanatic 6 лет назад
0
Да, конечно. Я перезагружался каждый раз, когда пытался исправить
audiFanatic 6 лет назад
0
@Ramhound Они не противоречия, потому что первая пара «дубликатов», за которые вы меня отметили, на самом деле не были дубликатами. Вы просто искали очки с модами, вы не хотели помогать. Если бы вы хотели помочь, вы бы связались с ответом, я бы сказал «да, это сработало» или «нет, это не сработало», а затем в первом случае, ТОГДА вы бы отметили меня как дубликат , Это форум для конструктивного обсуждения, это не конструктивное обсуждение, это охота на домовых.
audiFanatic 6 лет назад
0
Я не читал внешние источники. Я знал, каково было решение. Оказывается, я был прав. Приятного вам дня [.] (Https://superuser.com/questions/920156/accidentally-associated-exe-files-with-java-exe?noredirect=1&lq=1) вы, кстати, не потеряли репутацию в этом вопросе.
Ramhound 6 лет назад
0
Множество способов снятия шкуры с кошки, иногда вам нужно попробовать больше, чем один нож, потому что первый нож не полностью ударил кошку, не значит, что я не знал, что нужно сделать. За последние 6 лет я упоминал этот файл реестра около ста раз в комментариях. Это «все вышеперечисленное решение»
Ramhound 6 лет назад
0
Очень хорошо, но опять же, вы не помечаете его как дубликат, пока он на самом деле не будет дубликатом. Вы не привлекаете кого-то к суду по различным фиктивным обвинениям, пока кто-то не прилипнет. Это не то, как система правосудия работает ни в одной цивилизованной стране, ни в большинстве нецивилизованных. Почему это должно работать в Интернете?
audiFanatic 6 лет назад
0
Первым делом я пометил его как дубликат. Он не был бы закрыт как дубликат, пока 4 других человека не согласились бы со мной, или модератор (или пользователь золотого значка) не согласился со мной.
Ramhound 6 лет назад
0
0 ответов на вопрос
Похожие вопросы
-
2
Windows 7 Home Premium запоминает пароли общего доступа к сети?
-
4
Как заблокировать выровненные по правому краю панели инструментов в Windows 7, чтобы они не выглядел...
-
4
Функция Windows 7 «Aero Snap» в Ubuntu GNOME
-
-
3
Мой второй жесткий диск не виден в Windows 7
-
7
Как заменить Блокнот в Windows 7?
-
2
Как расположить значки панели задач Windows 7 в 2 ряда?
-
2
.profile в Mac OS X?
-
1
Проблемы во время сна на Windows 7
-
6
Как управлять функцией привязки Windows 7 с помощью двух мониторов?
-
10
Как мне обновить Windows 7 RC до Windows 7 RTM?