Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Microsoft ИТ-инфраструктура Виртуализация Oracle VirtualBox Управление сеансами виртуализации Oracle VM VirtualBox с помощью «ссылочных» файлов RSS

Управление сеансами виртуализации Oracle VM VirtualBox с помощью «ссылочных» файлов

Текущий рейтинг: 4.41 (проголосовало 29)
 Посетителей: 15135 | Просмотров: 21593 (сегодня 0)  Шрифт: - +

Введение

В данной статье рассматривается оригинальная методика управления запуском и сеансом виртуализации гостевой операционной системы в программе Oracle VM VirtualBox.

Более подробно познакомиться с платформой Oracle VM VirtualBox Вы можете в статьях Установка и настройка платформы виртуализации Oracle VM VirtualBox и Настройка сети на платформе виртуализации Oracle VM VirtualBox, а также на сайте разработчика Welcome to VirtualBox.org!.

Помимо указанной цели, в статье рассматривается нетривиальный способ создания, а также настройки собственного типа ярлыков – «ссылочных» файлов. Хочу сразу заострить внимание читателя на том, что создавать и настраивать мы будем ярлыки именно «собственного», нового типа.

Но для начала небольшая справка по ярлыкам из «Wikipedia»:

Ярлык (англ. shortcut) — файл-указатель или файл-ссылка на объект, которым может являться файл, программа или определенная команда. Ярлыки, привязанные к объекту файловой системы (как локального ПК, так и сетевого ресурса  имеют расширение «.lnk» (англ. link — связь).

«Ссылочные» файлы, которые мы будем создавать в данной статье, отличны от стандартных ярлыков и уникальны тем, что они не являются указателем на объект файловой системы. Объекты, на которые ссылаются наши ярлыки, недоступны через «Проводник» Windows или файловый менеджер. Эти объекты создаются, настраиваются и управляются только из того, приложения в котором они были созданы. В данной статье мы рассмотрим способ взаимодействия с такими объектами с помощью я ярлыков «собственного» типа – «ссылочных» файлов.

Основные элементы

Для того, чтобы воплотить все это в жизнь нам нужны три элемента – «объект», сценарий и сам «ссылочный» файл.

«Объект» - элемент приложения, созданный этим приложением и доступный для управления из этого же приложения. Это и есть то, с чем мы взаимодействовать, и чем мы будем управлять. В данной статье «объектом» является непосредственно виртуальная машина, установленная на платформе виртуализации Oracle VM VirtualBox. Как и в моих предыдущих статьях, рассматривать мы будем виртуальную машину с именем WinXP.

Примечание. Обратите внимание на имя нашей виртуальной машины, т.е. нашего объекта – это самое важное и критичное свойство. Ошибка в регистре символов при написании имени объекта приведет к ошибке в работе нашей системы.

Сценарий. Та система взаимодействия или, если хотите - драйвер, который мы создаем в рамках данной статьи, не является частью операционной системы, хотя все операции, производимые в ней, выполняются средствами Windows (в данном случае, Windows Vista< Home Premium SP2). И именно поэтому, мы самостоятельно подготовим и применим этот драйвер, который будет обрабатывать и перенаправлять наши инструкции (команды), выполняемые над объектом, к приложению, этот объект контролирующему.

«Ссылочный» файл – ярлык, и уже элемент файловой системы, созданный нами и зарегистрированный в системе. Именно этот элемент нашей системы взаимодействия содержит команды и свойства, необходимые нам для работы.

Примечание. В рамках данной статьи «ссылочный» файл содержит только одно нужное нам свойство – имя целевого объекта, которое должно совпадать с его собственным.

Объект и сценарий

Шаг первый: Определение объекта и методов обращения

В качестве объекта, как и было указано выше, я выбираю виртуальную машину с именем WinXP, установленную в платформе виртуализации  Oracle VM VirtualBox. В качестве методов обращения к виртуальной машине выберем следующие команды и определим название этих команд в контекстном меню, создаваемого «ссылочного» файла:

  • Запуск виртуальной машины с графическим интерфейсом – «Запуск»;
  • Запуск виртуальной машины в скрытом режиме – «Запуск в скрытом режиме»;
  • Приостановка виртуальной машины – «Пауза»;
  • Переключение между скрытым и графическим режимами – «Отключить/Включить GUI»;
  • Продолжение работы виртуальной машины – «Продолжить»;
  • Перезагрузка виртуальной машины – «Перезагрузка»;
  • Завершение сеанса виртуализации – «Завершение сеанса»;
  • Выключение виртуальной машины через «ACPI» – «Выключение»;
  • Вызов панели управления VM VirtualBox –  «Панель управления VirtualBox».

Примечание. Все указанные выше команды, выбранные мной, являются стандартными командами встроенных утилит управления платформой «Vboxmanage.exe» и «Vboxheadless.exe», поддерживающих работу с интерпретатором командных строк Windows – «Cmd.exe».  Создаваемый пункт контекстного меню «Скрытый запуск» определяет команду, доступную к исполнению только из командной строки. Единственное используемое в данном методе свойство объекта – это его имя и поэтому имя «ссылочного» файла (ярлыка) должно совпадать с именем объекта.

Шаг второй: сценарий обработки вызовов

В качестве сценария обработки вызов я использую собственный скрипт, написанный на языке Visual Basic и исполняемый сервером сценариев «Windows script host» – «wscript.exe». Поскольку скрипт обрабатывает несколько инструкций, он  должен поддерживать вызов с параметрами и осуществлять применение всех параметров и аргументов.

'Author        : Krasnukhin Viktor aka DEEPRED

'Date          : 30.08.2010

'--------------------------------------------------------------------------

Args1 = "": Args2 = "": Args3 = "": Args4 = ""

strApp_1 = "VirtualBox.exe"

strApp_2 = "VBoxHeadless.exe"

Set objShellApp = CreateObject("Shell.Application")

Set FSO   =  CreateObject("Scripting.FileSystemObject")

Args1 =  FSO.GetBaseName(Wscript.Arguments.Item(0))

Args2 =  Wscript.Arguments.Item(1)

Args3 =  Wscript.Arguments.Item(2)

Args4 =  Replace(WScript.scriptFullname, WScript.ScriptName, "")

'--------------------------------------------------------------------------

Set objWMIService = GetObject("winmgmts:" _

& "{impersonationLevel=impersonate}!\\" _

& "." & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery( _

"Select * from Win32_Process Where " & _

"commandline Like '% " & Args1 & "%'")

'--------------------------------------------------------------------------

IF lcase(Args2) = "virtualbox" Then

'Wscript.Echo "[ " & Args2 & " ]"

objShellApp.ShellExecute "VirtualBox.exe", "", Args4, "", 1

Wscript.Quit (0)

ElseIF lcase(Args3) = "headless" Then

'Wscript.Echo "HeadLess [ " & StrComLine & " ]"

objShellApp.ShellExecute "VBoxHeadless.exe", "-s "& Args1, Args4, "", 0

Wscript.Quit (0)

ElseIF lcase(Args2) = "startvm" Then

strComLine = Args2 &" "& Args1

'Wscript.Echo "Input [ " & StrComLine & " ]"

Call control(strComLine)

Wscript.Quit (0)

ElseIF lcase(Args2) = "controlvm" Then

Wscript.Echo colProcesses.count

IF colProcesses.count = 0 Then

Wscript.Echo "Нет открытых сеансов виртуализации!"

Wscript.Quit 1

End IF

strComLine = Args2 &" "& Args1 &" "& Args3

'Wscript.Echo "Control [ " & StrComLine & " ]"

Call control(strComLine)

Wscript.Quit (0)

ElseIF lcase(Args2) = "isnotgui" Then

Call ChangeState("str")

End IF

Wscript.Quit (0)

'--------------------------------------------------------------------------------------

Function control(strComLine)

StrComLine = StrComLine

'Wscript.Echo "Action [ " & StrComLine & " ]"

objShellApp.ShellExecute "VBoxmanage.exe", StrComLine, Args4, "", 0

End function

'--------------------------------------------------------------------------------------

Function ChangeState(str)

For Each objProcess in colProcesses

IF objProcess.name = strApp_1 Then

strAppExec = strApp_2

Call Restart(1, strAppExec, "")

strComLinePst = "-s " & Args1 & " –vrdp off"

Call Restart(2, strAppExec, strComLinePst)

'Wscript.Echo objProcess.commandline _

'& Vbcrlf & strAppExec

ElseIF objProcess.name = strApp_2 Then

strAppExec = strApp_1

Call Restart(1, strAppExec, "")

strComLinePst = "startvm " & Args1 & " --type gui"

Call Restart(2, strAppExec, strComLinePst)

'Wscript.Echo objProcess.commandline _

'& Vbcrlf & "strAppExec : " & strAppExec

Exit For

End IF

Next

End function

'--------------------------------------------------------------------------------------

Function Restart(Step, AppExec, ComLine)

strStepNum = step

strAppExec = AppExec

strComLine = ComLine

'Wscript.Echo  "Restart [ " & strStepNum &" : "& strAppExec &" : "& strComLine & " ]"

IF strStepNum = 1 Then

strComLinePre = "controlvm " & Args1 & " savestate"

objShellApp.ShellExecute "VBoxmanage.exe", strComLinePre, Args4, "", 1

'Wscript.Echo "SAVESTATE" & " : " & strComLinePre

Wscript.Sleep 10000

ElseIF strStepNum = 2 Then

objShellApp.ShellExecute strAppExec, strComLine, Args4, "", 1

End If

End function

'...

Скачать скрипт

Рассмотрим работу данного скрипта. Параметры, обрабатываемые данным сценарием, представляют собой имя ярлыка, которое является и именем виртуальной машины, а также параметры и аргументы командной строки утилит «vboxmanage.exe» и «vboxheadless.exe».  Каждый второй параметр, передаваемый скрипту, сравнивается с названием определенного действия, заложенного в сценарий. После этого одной из указанных утилит, передается команда и параметры на выполнение этого действия. Теперь давайте рассмотрим непосредственно команды, которые нам необходимы для управления виртуальной машиной:

  • Vboxmanage startvm WinXP – запуск виртуальной машины с графическим интерфейсом
  • [startvm] – параметр командной строки, обеспечивающий запуск виртуальной машины, описанной аргументом [WinXP];

  • VboxHeadless –s WinXP -- vrdp off – запуск виртуальной машины в скрытом режиме через встроенную утилиту VboxHeadless
  • [-s] – аргумент командной строки, предписывающий запуск виртуальной машины в скрытом режиме

    [--vrdp off] – аргумент командной строки, предписывающий отключение RDP-сервера;

  • Vboxmanage controlvm WinXP pause  – приостановка запущенной виртуальной машины
  • [pause] – аргумент командной строки, предписывающий остановку виртуальной машины;

  • Vboxmanage controlvm WinXP resume  – продолжение остановленного сеанса виртуализации
  • [resume] – аргумент командной строки, предписывающий продолжить работу виртуальной машины после остановки;

  • Vboxmanage controlvm WinXP reset  – перезагрузка  виртуальной машины
  • [reset] – аргумент командной строки, предписывающий перезагрузить виртуальную машину;

  • Vboxmanage controlvm WinXP poweroff  – завершение сеанса виртуализации
  • [poweroff] – аргумент командной строки, предписывающий выключить виртуальную машину;

  • Vboxmanage controlvm WinXP savestate  – сохранение состояния виртуальной машины
  • [savestate] – аргумент командной строки, предписывающий сохранить состояние и завершить сеанс виртуализации;

  • Vboxmanage controlvm WinXP acpipowerbutton  – программное выключение виртуальной машины
  • [acpipowerbutton] – аргумент командной строки, предписывающий послать сигнал выключения виртуальной машине.

Примечание. Тут я попрошу Вас обратить внимание на следующую строку в нашем сценарии:

strComLinePst = "-s " & Args1 & " --vrdp off"

Эта строка, в которой формируется команда для скрытого запуска сеанса виртуализации с помощью утилиты «vboxheadless.exe». Ключ " --vrdp off" я применяю сразу же при вызове виртуальной машины, т.к. все сеансы виртуализации, инициализируемые с помощью указанной утилиты, автоматически запускаются с уже включенным RDP-сервером (независимо от существования удаленных мониторов). Казалось бы, зачем же его выключать, если нет подключенных мониторов, а разрешение на подключение выдается только вручную пользователем?  Все дело в том, что при переводе сеанса из одного режима в другой, нам требуется сохранить состояние виртуальной машины, но произвести это невозможно при включенном RDP-сервере. В том случае, если Вам все же нужен сервер удаленных мониторов, то запуск сеансов следует проводить следующим образом:

  • для скрытого сеанса виртуализации

VboxHeadless –s WinXP

  • для запуска сеанса с графическим интерфейсом.

Vboxmanage startvm WinXP vrdp off

Если же Вам потребуется включить (или выключить) RDP-сервер уже во время сеанса виртуализации Вы можете воспользоваться следующей командой:

  • для включения сервера удаленных мониторов

Vboxmanage controlvm WinXP vrdp on

  • для выключения сервера удаленных мониторов

Vboxmanage controlvm WinXP vrdp off

Шаг третий: настройка контекстного меню и регистрация «ссылочного» файла

Перейдем к следующему этапу – созданию нового типа файла, настройке для него контекстного меню и регистрации его в системе. Все эти операции мы будем производить через реестр Windows, но не вручную, а через «твик» реестра. Сам файл реестра мы будем формировать поэтапно, чтобы Вы могли разобраться в каждом шаге.

Для нашего создаваемого типа файла я использую расширение «.cvb», означающее control virtualbox, т.е. управление виртуальной машиной. Итак, все зарегистрированные типы файлов в системе описаны в разделе реестра «HKEY_CLASSES_ROOT» (сокращенно – HKCR), причем для каждого из них присутствуют два раздела. Мы не будем отходить от этой системы и создадим в реестре два новых раздела – «.cvb» и «cvbfile». В первом разделе описано расширение файла и его тип, во втором опишем принадлежность файла к тому или иному приложению, пункты контекстного меню и значок. Таким образом мы получили первые строки нашего «твика»:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.cvb]

@="cvbfile"

[HKEY_CLASSES_ROOT\cvbfile]

@="VirtualBox.run"

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

"NeverShowExt"=""

"Ishorсut"=""

Так, давайте укажем иконку, которая будет соответствовать нашему «ссылочному» файлу. Как и моих предыдущих статьях, мы будет использовать иконку по умолчанию из файла WinFXDocObj.exe. Чтобы указать системе, какой значок использовать, добавим в наш «твик» реестра следующие строки:

[HKEY_CLASSES_ROOT\cvbfile\DefaultIcon]

@="C:\\WINDOWS\\System32\\WinFXDocObj.exe, 0"

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

Описание процесса создания пунктов контекстного меню

Для начала нужно создать в уже существующем разделе «HKCR\cvbfile» новый раздел с именем «Shell», т.е в «твик» добавляем строчку:

[HKEY_CLASSES_ROOT\cvbfile\shell]

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

[HKEY_CLASSES_ROOT\cvbfile\shell\• 3апуск]

Примечание. Символ «•» Я ставлю только для большей заметности этих пунктов в контекстном меню.

Теперь в этой же ветви создаем новый подраздел с именем «command», в нем как раз и будет находиться ключ реестра, отвечающий за запуск команды, соответствующей данному пункту контекстного меню.

[HKEY_CLASSES_ROOT\cvbfile\shell\• 3апуск\command]

И теперь внесем нужную нам команду в ключ реестра, находящийся в разделе «command».

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"virtualbox\" \"\""

Давайте рассмотрим записанную команду:

Wscript – cервер сценариев, отвечающий за выполнение скриптов, написанных на языке VBScript.

"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" – наш сценарий, с указанным для него полным путем.

"%1" – первый аргумент, передаваемый скрипту, он и содержит имя нашей виртуальной машины.

"startvm" – второй параметр, передаваемый сценарию. Для нашего скрипта он является одновременно, и контрольным названием для определенного действия (запуска виртуальной машины), и, как было сказано выше, параметром для командной строки утилиты «vboxmanage.exe».

"" – пустой параметр, присутствует для отвода ошибки, т.к. скрипт использует три входных параметра.

Сформированный файл

Теперь, когда проработали все пункты контекстного меню, для создаваемого нами файла, описали все параметры и определили принадлежность данного «ссылочного» к нашему сценарию – можно сформировать наш «твик». Таким образом, наш файл реестра приобрел следующий вид:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.cvb]

@="cvbfile"

[HKEY_CLASSES_ROOT\cvbfile]

@="VirtualBox.run"

"NeverShowExt"=""

"Ishorсut"=""

[HKEY_CLASSES_ROOT\cvbfile\DefaultIcon]

@="C:\\WINDOWS\\System32\\WinFXDocObj.exe, 0"

[HKEY_CLASSES_ROOT\cvbfile\shell]

@=""

[HKEY_CLASSES_ROOT\cvbfile\shell\VirtualBox панель управления]

[HKEY_CLASSES_ROOT\cvbfile\shell\VirtualBox панель управления\command]

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"virtualbox\" \"\""

[HKEY_CLASSES_ROOT\cvbfile\shell\• 3апуск]

[HKEY_CLASSES_ROOT\cvbfile\shell\• 3апуск\command]

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"startvm\" \"\""

[HKEY_CLASSES_ROOT\cvbfile\shell\• Cкрытый запуск]

[HKEY_CLASSES_ROOT\cvbfile\shell\• Cкрытый запуск\command]

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"\" \"headless\""

[HKEY_CLASSES_ROOT\cvbfile\shell\• Завершение]

[HKEY_CLASSES_ROOT\cvbfile\shell\• Завершение\command]

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"controlvm\" \"poweroff\""

[HKEY_CLASSES_ROOT\cvbfile\shell\• Завершение через ACPI]

[HKEY_CLASSES_ROOT\cvbfile\shell\• Завершение через ACPI\command]

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"controlvm\" \"acpipowerbutton\""

[HKEY_CLASSES_ROOT\cvbfile\shell\• Отключить/Включить GUI]

[HKEY_CLASSES_ROOT\cvbfile\shell\• Отключить/Включить GUI\command]

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"isnotgui\" \"\""

[HKEY_CLASSES_ROOT\cvbfile\shell\• Пауза]

[HKEY_CLASSES_ROOT\cvbfile\shell\• Пауза\command]

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"controlvm\" \"pause\""

[HKEY_CLASSES_ROOT\cvbfile\shell\• Продолжить]

[HKEY_CLASSES_ROOT\cvbfile\shell\• Продолжить\command]

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"controlvm\" \"resume\""

[HKEY_CLASSES_ROOT\cvbfile\shell\• Сброс]

[HKEY_CLASSES_ROOT\cvbfile\shell\• Сброс\command]

@="wscript \"C:\\Program Files\\Oracle\\VirtualBox\\inter.vbs\" \"%1\" \"controlvm\" \"reset\""

Скачать «твик»

Шаг четвертый: Подготовка к работе

Теперь, когда у нас уже готовы и «твик» реестра, и сценарий обработки запросов, нужно задействовать и разместить их нужным образом.  Для этого Вам нужно провести следующие действия:

  • скопировать код приведенного выше скрипта в в текстовый файл и сохранить его с именем «inter» и расширением «.vbs» в папке «C:\Program Files\Oracle\VirtualBox\». Если же при установке платформы VirtualBox Вы выбрали другое расположение файлов программы, то vbs-сценарий Вам также следует  расположить в папке «…\Oracle\VirtualBox\», а файле реестра следует изменить путь к скрипту;
  • скопировать код приведенного выше «твика» реестра в любой текстовый редактор и сохранить его с любым именем и расширением «.reg» в любом месте на вашем жестком диске. Затем двойным щелчком мыши запустить данный файл и подтвердить добавление данных в реестр. Если после Вы загляните в реестр (меню «Пуск» - «Выполнить» - «Regedit» - «раздел HKEY_CLASSES_ROOT»), то увидите там следующую картину:

Рис. 1: Созданный раздел в реестре

Примечание. Обратите внимание, что «твик» реестра подразумевает установку Вашей операционной системы на диск «С:\». Если же у Вас операционная система установлена на диск с другой литерой, то в созданном файле реестра следует изменить путь к файлу сценария.

  • создать на рабочем столе или в любом другом месте «ссылочный» файл с именем WinXP и расширением «.cvb». После того, как вы создадите такой файл, Вы увидите, что расширение для него не отображается, как и у обычных ярлыков, созданных стандартным способом, а его иконка именно такая, как была выбрана нами ранее:


Рис. 2: Вид «ссылочного» файла

Использование

После того, как Вы создали «ссылочный» файл, остается только проверить – все ли работает, а затем начинать пользоваться данным нововведением. Для того, чтобы удостовериться, что все заданные нами команды были правильно прописаны в системы и доступны для использования щелкнем правой мыши кнопкой на нашем «ярлыке» для вызова контекстного меню. Если Вы видите следующую картину, то значит все в порядке:

Рис. 3: Вид контекстного меню ссылочного файла

Разместить подобные «ссылочные» файлы Вы можете в любой папке, «Панели быстрого запуска» или в меню. Также Вы можете использовать подготовленный нами сценарий для перевода сеанса виртуализации из интерактивного режима в скрытый вызвав его с параметрами из командной строки. В данном случае командная строка будет иметь следующий вид:

wscript "C:\Program Files\Oracle\VirtualBox\inter.vbs WinXP "isnotgui" ""

Также Вы можете создать задание в «Планировщике заданий» с точно такими же параметрами, например, для перевода сеанса виртуализации из одного режима в другой.

Заключение

В рамках данной статьи были рассмотрены для основные задачи:

  • Создание собственного способа управления сеансами виртуализации Oracle VM VirtualBox;
  • Создание собственного типа «ссылочных» файлов.

Первая задача является универсальным способом взаимодействия с платформой виртуализации, используя её возможности поддержки управления посредством командной строки, не обращаясь напрямую к интерпретатору командных строк Windows. Главным преимуществом данного метода является его гибкость, например, Вы можете добавить пункты контекстного меню для управления сетевыми подключениями виртуальной машины или для создания (применения) снимков. Точно таким же образом Вы может настроить и создать контекстные меню для управления, например, виртуальными дисками, файлами конфигурации виртуальных машин.

Вторая задача является методом настройки Вашей операционной системы «под ключ», т.е. именно под Вас. С помощью создания подобных «ссылочных файлов» и сценариев Вы можете создавать собственные процедуры обработки не только для объектов файловой системы, но и объектов установленных на Вашем ПК приложений, недоступных напрямую через «Проводник» Windows или файловый менеджер. В данном случае, основным инструментом будет являться Ваша фантазия и желание поработать. Более того, использую приведенный выше метод настройки контекстного меню для конкретного типа, Вы можете настроить любые связи между объектами Вашей файловой системы и установленными программами.

Автор: Виктор Краснухин aka Deepred  •  Иcточник: www.oszone.net  •  Опубликована: 07.09.2010
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER


Оценить статью:
Вверх
Комментарии посетителей
29.09.2010/13:25  curast

создать на рабочем столе или в любом другом месте «ссылочный» файл с именем WinXP и расширением «.cvb».
Ну и как же их создать?
03.10.2010/23:30  deepred

curast,
в чем проблема? Создайте на рабочем столе через контекстное меню правой кнопки мыши текстовый файл и переименуйте его...
08.03.2011/21:51  klg

2 ошибки в комментариях
ключ -s это всего лишь alias --startvm, а не "скрытый режим"
смена режима - фэйк, я надеялся узнать что-то стоящее, а тут просто рестарт в другом режиме, это не дело. лучше уж тогда через ShowWindow() переключать скрытый\не_скрытый режимы
Комментарии отключены. С вопросами по статьям обращайтесь в форум.