Created
May 31, 2016 17:21
-
-
Save EvilBeaver/82c9aa10ddcfde575a7ba13f0d8979f2 to your computer and use it in GitHub Desktop.
Associate 1script files in Windows
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Привязка файлов *.os к oscript.exe | |
// Запуск скриптов *.os из командной строки без указания расширения | |
// (с) awa, 2015 | |
#Использовать tempfiles | |
Процедура Главная() | |
СистемнаяИнформация = Новый СистемнаяИнформация; | |
ОС = НРег(СистемнаяИнформация.ВерсияОС); | |
Если Найти(ОС, "windows") = 0 Тогда | |
Сообщить("Данный скрипт предназначен для запуска только на Windows"); | |
Возврат; | |
КонецЕсли; | |
ПривязатьСкрипты(); | |
ВключитьЗапускСкриптовБезРасширения(); | |
ВременныеФайлы.Удалить(); | |
КонецПроцедуры | |
Процедура ПривязатьСкрипты() | |
Перем КодВозврата; | |
СообщениеОбОшибке = "!!! Не удалось привязать файлы *.os к oscript.exe"; | |
СтрокаЗапуска = "REG ADD HKCR\.os /ve /d OneScriptFile /f"; | |
ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); | |
Если КодВозврата <> 0 Тогда | |
Сообщить(СообщениеОбОшибке); | |
Возврат; | |
КонецЕсли; | |
СтрокаЗапуска = "REG ADD HKCR\OneScriptFile /ve /d ""OneScript file"" /f"; | |
ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); | |
Если КодВозврата <> 0 Тогда | |
Сообщить(СообщениеОбОшибке); | |
Возврат; | |
КонецЕсли; | |
СтрокаЗапуска = "REG ADD HKCR\OneScriptFile\shell\open\command /ve /d ""\""" + КаталогПрограммы() + "\oscript.exe\"" \""%1\"" %*"" /f"; | |
ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); | |
Если КодВозврата <> 0 Тогда | |
Сообщить(СообщениеОбОшибке); | |
Возврат; | |
КонецЕсли; | |
Сообщить("Файлы *.os привязаны к oscript.exe"); | |
КонецПроцедуры | |
Процедура ПривязатьСкрипты_СтарыйВариант() | |
ТекстРегФайла = | |
"Windows Registry Editor Version 5.00 | |
| | |
|[HKEY_CLASSES_ROOT\.os] | |
|@=""OneScriptFile"" | |
| | |
|[HKEY_CLASSES_ROOT\OneScriptFile] | |
|@=""OneScript file"" | |
| | |
|[HKEY_CLASSES_ROOT\OneScriptFile\shell] | |
| | |
|[HKEY_CLASSES_ROOT\OneScriptFile\shell\open] | |
| | |
|[HKEY_CLASSES_ROOT\OneScriptFile\shell\open\command] | |
|@=""\""" + СтрЗаменить(КаталогПрограммы(), "\", "\\") + "\\oscript.exe\"" \""%1\"" %*"" | |
| | |
|[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.os\UserChoice] | |
| | |
|[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.os\OpenWithProgids] | |
|""OneScriptFile""=hex(0): | |
|"; | |
РегФайл = ВременныеФайлы.НовоеИмяФайла("reg"); | |
ЗаписьТекста = Новый ЗаписьТекста(РегФайл, КодировкаТекста.UTF16); | |
ЗаписьТекста.Записать(ТекстРегФайла); | |
ЗаписьТекста.Закрыть(); | |
ЗаписьТекста = Неопределено; | |
СтрокаЗапуска = "regedit.exe /s """ + РегФайл + """"; | |
ЗапуститьПриложение(СтрокаЗапуска, , Истина); | |
КонецПроцедуры | |
Процедура ВключитьЗапускСкриптовБезРасширения() | |
Перем КодВозврата; | |
СообщениеОбОшибке = "!!! Не удалось включить запуск скриптов"; | |
ВременныйФайл = ВременныеФайлы.НовоеИмяФайла("txt"); | |
СтрокаЗапуска = "cmd.exe /c REG QUERY ""HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"" /v PATHEXT > """ + ВременныйФайл + """"; | |
ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); | |
Если КодВозврата <> 0 Тогда | |
Сообщить(СообщениеОбОшибке); | |
Возврат; | |
КонецЕсли; | |
ЧтениеТекста = Новый ЧтениеТекста(ВременныйФайл, КодировкаТекста.OEM); | |
Стр = ЧтениеТекста.Прочитать(); | |
ЧтениеТекста.Закрыть(); | |
МассивСтрок = СтрРазделить(Стр, Символы.ВК + Символы.ПС, Ложь); | |
Стр = МассивСтрок[1]; | |
МассивСтрок = СтрРазделить(Стр, " ", Ложь); | |
Стр = МассивСтрок[2]; | |
МассивСтрок = СтрРазделить(Стр, ";", Ложь); | |
Для каждого Элемент Из МассивСтрок Цикл | |
Если ВРег(Элемент) = ".OS" Тогда | |
Сообщить("Запуск скриптов по имени без расширения уже был включен..."); | |
Возврат; | |
КонецЕсли; | |
КонецЦикла; | |
Стр = Стр + ";.OS"; | |
СтрокаЗапуска = "REG ADD ""HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"" /v PATHEXT /d """ + Стр + """ /f"; | |
ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); | |
Если КодВозврата <> 0 Тогда | |
Сообщить(СообщениеОбОшибке); | |
Возврат; | |
КонецЕсли; | |
Сообщить("Запуск скриптов по имени без расширения включен (необходимо перезвгрузить компьютер)!"); | |
КонецПроцедуры | |
Главная(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment