#pragma once #include "qsbieapi_global.h" #include "SbieStatus.h" class QSBIEAPI_EXPORT CSbieUtils { public: enum EComponent { eNone = 0, eDriver = 0x01, eService = 0x02, eAll = 0xFF }; static SB_STATUS DoAssist(); static SB_RESULT(void*) Start(EComponent Component); static SB_RESULT(void*) Stop(EComponent Component); static bool IsRunning(EComponent Component); static SB_RESULT(void*) Install(EComponent Component); static SB_RESULT(void*) Uninstall(EComponent Component); static bool IsInstalled(EComponent Component); static QString GetContextMenuStartCmd(); static void AddContextMenu(const QString& StartPath, const QString& RunStr, /*const QString& ExploreStr,*/ const QString& IconPath = QString()); static void RemoveContextMenu(); static bool HasContextMenu2(); static void AddContextMenu2(const QString& StartPath, const QString& RunStr, const QString& IconPath = QString()); static void RemoveContextMenu2(); static bool CreateShortcut(class CSbieAPI* pApi, QString LinkPath, const QString &LinkName, const QString &boxname, const QString &arguments, const QString &iconPath = QString(), int iconIndex = 0, const QString &workdir = QString(), bool bRunElevated = false); static bool GetStartMenuShortcut(class CSbieAPI* pApi, QString &BoxName, QString &LinkPath, QString &IconPath, quint32& IconIndex, QString &WorkDir); static CSbieProgressPtr RunCommand(const QString& Command, bool noGui = false); static int ExecCommand(const QString& Command, bool noGui = false, quint32 Timeout = -1); static int ExecCommandEx(const QString& Command, QString* pOutput, quint32 Timeout = -1); private: static SB_RESULT(void*) ElevateOps(const QStringList& Ops); static SB_STATUS ExecOps(const QStringList& Ops); static void Start(EComponent Component, QStringList& Ops); static void Stop(EComponent Component, QStringList& Ops); static void Install(EComponent Component, QStringList& Ops); static void Uninstall(EComponent Component, QStringList& Ops); static void CreateShellEntry(const std::wstring& classname, const std::wstring& key, const std::wstring& cmdtext, const std::wstring& iconpath, const std::wstring& startcmd); }; bool QSBIEAPI_EXPORT ShellOpenRegKey(const QString& KeyName);