commit
48897a6c0f
14
CHANGELOG.md
14
CHANGELOG.md
|
@ -2,6 +2,12 @@
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
## [1.1x.x / 5.xx.x] - 2024-07-0x
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- added UI options for "ForceRestartAll" and "UseCreateToken" in OptionWindow
|
||||||
|
- added an optional context menu option to make folder/file forced quickly
|
||||||
|
- You can also use "Sandman.exe /add_force program_path" to do it
|
||||||
|
|
||||||
## [1.14.4 / 5.69.4] - 2024-07-13
|
## [1.14.4 / 5.69.4] - 2024-07-13
|
||||||
|
|
||||||
|
@ -16,9 +22,6 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
- added hwid display
|
- added hwid display
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [1.14.3 / 5.69.3] - 2024-07-01
|
## [1.14.3 / 5.69.3] - 2024-07-01
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
@ -49,8 +52,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
- added template "BlockLocalConnect" to prevent sandboxed processes from sending network packets to localhost to breakout sandbox
|
- added template "BlockLocalConnect" to prevent sandboxed processes from sending network packets to localhost to breakout sandbox
|
||||||
- added new option "AllowCoverTaskbar" for [#3975](https://github.com/sandboxie-plus/Sandboxie/issues/3975)
|
- added new option "AllowCoverTaskbar" for [#3975](https://github.com/sandboxie-plus/Sandboxie/issues/3975)
|
||||||
- added RPC Port message filter mechanism to block unsafe RDP calls via the driver [#3930](https://github.com/sandboxie-plus/Sandboxie/issues/3930)
|
- added RPC Port message filter mechanism to block unsafe RDP calls via the driver [#3930](https://github.com/sandboxie-plus/Sandboxie/issues/3930)
|
||||||
- usage: "RpcPortFilter=Port,ID,Label" label is optional
|
- Usage: "RpcPortFilter=Port,ID,Label" label is optional
|
||||||
- added "Job Object" options page to collect all job object related options
|
- added "Job Object" Options page to colelct all job object related options
|
||||||
|
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- extend "Temp Template" to make it could delete local template section
|
- extend "Temp Template" to make it could delete local template section
|
||||||
|
|
|
@ -487,6 +487,42 @@ void CSbieUtils::RemoveContextMenu2()
|
||||||
RegDeleteTreeW(HKEY_CURRENT_USER, L"software\\classes\\*\\shell\\unbox");
|
RegDeleteTreeW(HKEY_CURRENT_USER, L"software\\classes\\*\\shell\\unbox");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CSbieUtils::HasContextMenu3()
|
||||||
|
{
|
||||||
|
const wchar_t* key = L"Software\\Classes\\*\\shell\\addforce\\command";
|
||||||
|
//const wchar_t* key2 = L"Software\\Classes\\*\\Folder\\addforce\\command";
|
||||||
|
HKEY hkey,hKey2;
|
||||||
|
LONG rc = RegOpenKeyEx(HKEY_CURRENT_USER, key, 0, KEY_READ, &hkey);
|
||||||
|
if (rc != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
RegCloseKey(hkey);
|
||||||
|
|
||||||
|
|
||||||
|
/*rc = RegOpenKeyEx(HKEY_CURRENT_USER, key2, 0, KEY_READ, &hkey2);
|
||||||
|
if (rc != 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
RegCloseKey(hkey2);*/
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSbieUtils::AddContextMenu3(const QString& StartPath, const QString& RunStr, const QString& IconPath)
|
||||||
|
{
|
||||||
|
std::wstring start_path = L"\"" + StartPath.toStdWString() + L"\"";
|
||||||
|
std::wstring icon_path = L"\"" + (IconPath.isEmpty() ? StartPath : IconPath).toStdWString() + L"\"";
|
||||||
|
|
||||||
|
CreateShellEntry(L"*", L"addforce", RunStr.toStdWString(), icon_path, start_path + L" /add_force \"%1\" %*");
|
||||||
|
CreateShellEntry(L"Folder", L"addforce", RunStr.toStdWString(), icon_path, start_path + L" /add_force \"%1\" %*");
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSbieUtils::RemoveContextMenu3()
|
||||||
|
{
|
||||||
|
RegDeleteTreeW(HKEY_CURRENT_USER, L"software\\classes\\*\\shell\\addforce");
|
||||||
|
RegDeleteTreeW(HKEY_CURRENT_USER, L"software\\classes\\folder\\shell\\addforce");
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
// Shortcuts
|
// Shortcuts
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,10 @@ public:
|
||||||
static void AddContextMenu2(const QString& StartPath, const QString& RunStr, const QString& IconPath = QString());
|
static void AddContextMenu2(const QString& StartPath, const QString& RunStr, const QString& IconPath = QString());
|
||||||
static void RemoveContextMenu2();
|
static void RemoveContextMenu2();
|
||||||
|
|
||||||
|
static bool HasContextMenu3();
|
||||||
|
static void AddContextMenu3(const QString& StartPath, const QString& RunStr, const QString& IconPath = QString());
|
||||||
|
static void RemoveContextMenu3();
|
||||||
|
|
||||||
static bool CreateShortcut(const QString& StartExe, 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 CreateShortcut(const QString& StartExe, 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 bool GetStartMenuShortcut(class CSbieAPI* pApi, QString &BoxName, QString &LinkPath, QString &IconPath, quint32& IconIndex, QString &WorkDir);
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
<enum>QTabWidget::North</enum>
|
<enum>QTabWidget::North</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>5</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tabGeneral">
|
<widget class="QWidget" name="tabGeneral">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
@ -1095,7 +1095,7 @@
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QTabWidget" name="tabsSecurity">
|
<widget class="QTabWidget" name="tabsSecurity">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>3</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tabHarden">
|
<widget class="QWidget" name="tabHarden">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
@ -1739,7 +1739,7 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="2">
|
<item row="10" column="2">
|
||||||
<spacer name="horizontalSpacer_13">
|
<spacer name="horizontalSpacer_13">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
|
@ -1769,6 +1769,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="9" column="1" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="chkCreateToken">
|
||||||
|
<property name="text">
|
||||||
|
<string>Create a new sandboxed token instead of setting down default token</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="4" column="4">
|
<item row="4" column="4">
|
||||||
<widget class="QLabel" name="label_65">
|
<widget class="QLabel" name="label_65">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
|
@ -4089,7 +4096,14 @@ The process match level has a higher priority than the specificity and describes
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0">
|
<item row="7" column="1">
|
||||||
|
<widget class="QCheckBox" name="chkForceRestart">
|
||||||
|
<property name="text">
|
||||||
|
<string>Restart force process before they begin to execute</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="0">
|
||||||
<spacer name="verticalSpacer_28">
|
<spacer name="verticalSpacer_28">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
|
@ -4130,7 +4144,7 @@ The process match level has a higher priority than the specificity and describes
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="1">
|
<item row="8" column="1">
|
||||||
<spacer name="horizontalSpacer_12">
|
<spacer name="horizontalSpacer_12">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
|
@ -5079,8 +5093,8 @@ instead of "*".</string>
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>98</width>
|
<width>75</width>
|
||||||
<height>28</height>
|
<height>16</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="dbgLayout">
|
<layout class="QGridLayout" name="dbgLayout">
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>747</width>
|
<width>820</width>
|
||||||
<height>524</height>
|
<height>565</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
@ -455,162 +455,7 @@
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Windows Shell</string>
|
<string>Windows Shell</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QGridLayout" name="gridLayout_30">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<layout class="QGridLayout" name="gridLayout_13">
|
<layout class="QGridLayout" name="gridLayout_13">
|
||||||
<item row="11" column="3" colspan="2">
|
|
||||||
<spacer name="horizontalSpacer_2">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="9" column="0" colspan="2">
|
|
||||||
<widget class="QLabel" name="label_22">
|
|
||||||
<property name="text">
|
|
||||||
<string>Integrate with Host Start Menu</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="openExternalLinks">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="1" colspan="3">
|
|
||||||
<widget class="QCheckBox" name="chkShellMenu">
|
|
||||||
<property name="text">
|
|
||||||
<string>Add 'Run Sandboxed' to the explorer context menu</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="6" column="2" colspan="3">
|
|
||||||
<widget class="QCheckBox" name="chkShellMenu2">
|
|
||||||
<property name="text">
|
|
||||||
<string>Add 'Run Un-Sandboxed' to the context menu</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="2" colspan="3">
|
|
||||||
<widget class="QCheckBox" name="chkAlwaysDefault">
|
|
||||||
<property name="text">
|
|
||||||
<string>Always use DefaultBox</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="10" column="2">
|
|
||||||
<widget class="QComboBox" name="cmbIntegrateDesk"/>
|
|
||||||
</item>
|
|
||||||
<item row="10" column="0" colspan="2">
|
|
||||||
<widget class="QLabel" name="label_29">
|
|
||||||
<property name="text">
|
|
||||||
<string>Integrate with Host Desktop</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="openExternalLinks">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1" colspan="3">
|
|
||||||
<widget class="QCheckBox" name="chkSvcStart">
|
|
||||||
<property name="text">
|
|
||||||
<string>Start UI when a sandboxed process is started</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="8" column="1" colspan="3">
|
|
||||||
<widget class="QCheckBox" name="chkScanMenu">
|
|
||||||
<property name="text">
|
|
||||||
<string>Scan shell folders and offer links in run menu</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="9" column="2">
|
|
||||||
<widget class="QComboBox" name="cmbIntegrateMenu"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1" colspan="3">
|
|
||||||
<widget class="QCheckBox" name="chkAutoStart">
|
|
||||||
<property name="text">
|
|
||||||
<string>Start UI with Windows</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="2">
|
|
||||||
<spacer name="horizontalSpacer_9">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="7" column="0">
|
|
||||||
<widget class="QLabel" name="lblStartMenu">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
<kerning>true</kerning>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Start Menu Integration</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="3">
|
|
||||||
<spacer name="horizontalSpacer_6">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="11" column="1">
|
|
||||||
<spacer name="verticalSpacer_6">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1">
|
|
||||||
<widget class="QLabel" name="label_37">
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="lblStartUp">
|
<widget class="QLabel" name="lblStartUp">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
|
@ -625,6 +470,20 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="chkAutoStart">
|
||||||
|
<property name="text">
|
||||||
|
<string>Start UI with Windows</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1" colspan="3">
|
||||||
|
<widget class="QCheckBox" name="chkSvcStart">
|
||||||
|
<property name="text">
|
||||||
|
<string>Start UI when a sandboxed process is started</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QLabel" name="lblRunBoxed">
|
<widget class="QLabel" name="lblRunBoxed">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
|
@ -639,7 +498,151 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
<item row="3" column="1">
|
||||||
|
<widget class="QLabel" name="label_37">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="2">
|
||||||
|
<spacer name="horizontalSpacer_9">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>272</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="3">
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>272</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1" colspan="3">
|
||||||
|
<widget class="QCheckBox" name="chkShellMenu">
|
||||||
|
<property name="text">
|
||||||
|
<string>Add 'Run Sandboxed' to the explorer context menu</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="2" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="chkAlwaysDefault">
|
||||||
|
<property name="text">
|
||||||
|
<string>Always use DefaultBox</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="2" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="chkShellMenu2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Add 'Run Un-Sandboxed' to the context menu</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="1" colspan="3">
|
||||||
|
<widget class="QCheckBox" name="chkShellMenu3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Add ‘Make Folder/File Forced' to the context menu</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="0">
|
||||||
|
<widget class="QLabel" name="lblStartMenu">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
<kerning>true</kerning>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Start Menu Integration</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="9" column="1" colspan="3">
|
||||||
|
<widget class="QCheckBox" name="chkScanMenu">
|
||||||
|
<property name="text">
|
||||||
|
<string>Scan shell folders and offer links in run menu</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="0" colspan="2">
|
||||||
|
<widget class="QLabel" name="label_22">
|
||||||
|
<property name="text">
|
||||||
|
<string>Integrate with Host Start Menu</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="openExternalLinks">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="2">
|
||||||
|
<widget class="QComboBox" name="cmbIntegrateMenu"/>
|
||||||
|
</item>
|
||||||
|
<item row="11" column="0" colspan="2">
|
||||||
|
<widget class="QLabel" name="label_29">
|
||||||
|
<property name="text">
|
||||||
|
<string>Integrate with Host Desktop</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="openExternalLinks">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="11" column="2">
|
||||||
|
<widget class="QComboBox" name="cmbIntegrateDesk"/>
|
||||||
|
</item>
|
||||||
|
<item row="12" column="1">
|
||||||
|
<spacer name="verticalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>154</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="12" column="3">
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>272</width>
|
||||||
|
<height>13</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -1636,6 +1636,30 @@ void CSandMan::OnMessage(const QString& MsgData)
|
||||||
setWindowState(Qt::WindowActive);
|
setWindowState(Qt::WindowActive);
|
||||||
SetForegroundWindow(MainWndHandle);
|
SetForegroundWindow(MainWndHandle);
|
||||||
}
|
}
|
||||||
|
else if (Message.left(4) == "Add:")
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
QString respone = QInputDialog::getText(g_GUIParent, tr("Which box you want to add in?"), tr("Type the box name which you are going to set:"));
|
||||||
|
if(!respone.isEmpty())
|
||||||
|
{
|
||||||
|
if (theAPI->GetBoxByName(respone) != NULL) {
|
||||||
|
if (Message.right(1)=="\\"||!Message.contains(".", Qt::CaseInsensitive)) {
|
||||||
|
theAPI->GetBoxByName(respone)->AppendText("ForceFolder", Message.mid(4).replace("\"",""));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
theAPI->GetBoxByName(respone)->AppendText("ForceProcess", Message.mid(4).replace("\"", "").mid(Message.mid(4).replace("\"", "").lastIndexOf("\\")+1));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
QMessageBox::warning(g_GUIParent, tr("Sandboxie-Plus Warning"), tr("You typed a wrong box name!Nothing was changed."), QMessageBox::Ok, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
QMessageBox::warning(g_GUIParent, tr("Sandboxie-Plus Warning"), tr("Users canceled this operation."), QMessageBox::Yes, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (Message.left(4) == "Run:")
|
else if (Message.left(4) == "Run:")
|
||||||
{
|
{
|
||||||
QString BoxName;
|
QString BoxName;
|
||||||
|
|
|
@ -30,6 +30,8 @@ void COptionsWindow::CreateAdvanced()
|
||||||
connect(ui.chkOpenCOM, SIGNAL(clicked(bool)), this, SLOT(OnOpenCOM()));
|
connect(ui.chkOpenCOM, SIGNAL(clicked(bool)), this, SLOT(OnOpenCOM()));
|
||||||
connect(ui.chkComTimeout, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
connect(ui.chkComTimeout, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
||||||
|
|
||||||
|
connect(ui.chkForceRestart, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
||||||
|
|
||||||
connect(ui.chkNoSecurityIsolation, SIGNAL(clicked(bool)), this, SLOT(OnIsolationChanged()));
|
connect(ui.chkNoSecurityIsolation, SIGNAL(clicked(bool)), this, SLOT(OnIsolationChanged()));
|
||||||
connect(ui.chkNoSecurityFiltering, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
connect(ui.chkNoSecurityFiltering, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
||||||
|
|
||||||
|
@ -39,7 +41,7 @@ void COptionsWindow::CreateAdvanced()
|
||||||
connect(ui.chkOpenLsaEndpoint, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
connect(ui.chkOpenLsaEndpoint, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
||||||
|
|
||||||
connect(ui.chkSbieLogon, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
connect(ui.chkSbieLogon, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
||||||
|
connect(ui.chkCreateToken, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
||||||
|
|
||||||
m_AdvOptions.insert("UseWin32kHooks", SAdvOption{eSpec, QStringList() << "y" << "n", tr("Enable the use of win32 hooks for selected processes. Note: You need to enable win32k syscall hook support globally first.")});
|
m_AdvOptions.insert("UseWin32kHooks", SAdvOption{eSpec, QStringList() << "y" << "n", tr("Enable the use of win32 hooks for selected processes. Note: You need to enable win32k syscall hook support globally first.")});
|
||||||
m_AdvOptions.insert("EnableMiniDump", SAdvOption{eSpec, QStringList() << "y" << "n", tr("Enable crash dump creation in the sandbox folder")});
|
m_AdvOptions.insert("EnableMiniDump", SAdvOption{eSpec, QStringList() << "y" << "n", tr("Enable crash dump creation in the sandbox folder")});
|
||||||
|
@ -142,6 +144,8 @@ void COptionsWindow::LoadAdvanced()
|
||||||
ui.chkProtectSystem->setChecked(!m_pBox->GetBool("ExposeBoxedSystem", false));
|
ui.chkProtectSystem->setChecked(!m_pBox->GetBool("ExposeBoxedSystem", false));
|
||||||
ui.chkDropPrivileges->setChecked(m_pBox->GetBool("StripSystemPrivileges", true));
|
ui.chkDropPrivileges->setChecked(m_pBox->GetBool("StripSystemPrivileges", true));
|
||||||
|
|
||||||
|
ui.chkForceRestart->setChecked(m_pBox->GetBool("ForceRestartAll", false));
|
||||||
|
|
||||||
CheckOpenCOM();
|
CheckOpenCOM();
|
||||||
ui.chkComTimeout->setChecked(!m_pBox->GetBool("RpcMgmtSetComTimeout", true));
|
ui.chkComTimeout->setChecked(!m_pBox->GetBool("RpcMgmtSetComTimeout", true));
|
||||||
|
|
||||||
|
@ -373,6 +377,8 @@ void COptionsWindow::SaveAdvanced()
|
||||||
|
|
||||||
WriteAdvancedCheck(ui.chkComTimeout, "RpcMgmtSetComTimeout", "n", "");
|
WriteAdvancedCheck(ui.chkComTimeout, "RpcMgmtSetComTimeout", "n", "");
|
||||||
|
|
||||||
|
WriteAdvancedCheck(ui.chkForceRestart, "ForceRestartAll", "y", "");
|
||||||
|
|
||||||
WriteAdvancedCheck(ui.chkNoSecurityIsolation, "NoSecurityIsolation", "y", "");
|
WriteAdvancedCheck(ui.chkNoSecurityIsolation, "NoSecurityIsolation", "y", "");
|
||||||
WriteAdvancedCheck(ui.chkNoSecurityFiltering, "NoSecurityFiltering", "y", "");
|
WriteAdvancedCheck(ui.chkNoSecurityFiltering, "NoSecurityFiltering", "y", "");
|
||||||
|
|
||||||
|
@ -426,6 +432,9 @@ void COptionsWindow::SaveAdvanced()
|
||||||
bool bGlobalSbieLogon = m_pBox->GetAPI()->GetGlobalSettings()->GetBool("SandboxieLogon", false);
|
bool bGlobalSbieLogon = m_pBox->GetAPI()->GetGlobalSettings()->GetBool("SandboxieLogon", false);
|
||||||
WriteAdvancedCheck(ui.chkSbieLogon, "SandboxieLogon", bGlobalSbieLogon ? "" : "y", bGlobalSbieLogon ? "n" : "");
|
WriteAdvancedCheck(ui.chkSbieLogon, "SandboxieLogon", bGlobalSbieLogon ? "" : "y", bGlobalSbieLogon ? "n" : "");
|
||||||
|
|
||||||
|
bool bGlobalSandboxGroup = m_pBox->GetAPI()->GetGlobalSettings()->GetBool("SandboxieAllGroup", false);
|
||||||
|
WriteAdvancedCheck(ui.chkCreateToken, "UseCreateToken", bGlobalSandboxGroup ? "" : "y", "");
|
||||||
|
|
||||||
SaveOptionList();
|
SaveOptionList();
|
||||||
|
|
||||||
bool bGlobalNoMon = m_pBox->GetAPI()->GetGlobalSettings()->GetBool("DisableResourceMonitor", false);
|
bool bGlobalNoMon = m_pBox->GetAPI()->GetGlobalSettings()->GetBool("DisableResourceMonitor", false);
|
||||||
|
@ -595,14 +604,16 @@ void COptionsWindow::UpdateBoxIsolation()
|
||||||
ui.chkNoOpenForBox->setEnabled(!ui.chkNoSecurityIsolation->isChecked());
|
ui.chkNoOpenForBox->setEnabled(!ui.chkNoSecurityIsolation->isChecked());
|
||||||
|
|
||||||
ui.chkSbieLogon->setEnabled(!ui.chkNoSecurityIsolation->isChecked());
|
ui.chkSbieLogon->setEnabled(!ui.chkNoSecurityIsolation->isChecked());
|
||||||
|
ui.chkCreateToken->setEnabled(!ui.chkNoSecurityIsolation->isChecked());
|
||||||
if (ui.chkNoSecurityIsolation->isChecked()) {
|
if (ui.chkNoSecurityIsolation->isChecked()) {
|
||||||
ui.chkCloseForBox->setChecked(false);
|
ui.chkCloseForBox->setChecked(false);
|
||||||
ui.chkNoOpenForBox->setChecked(false);
|
ui.chkNoOpenForBox->setChecked(false);
|
||||||
ui.chkSbieLogon->setChecked(false);
|
ui.chkSbieLogon->setChecked(false);
|
||||||
|
ui.chkCreateToken->setChecked(false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ReadGlobalCheck(ui.chkSbieLogon, "SandboxieLogon", false);
|
ReadGlobalCheck(ui.chkSbieLogon, "SandboxieLogon", false);
|
||||||
|
ReadGlobalCheck(ui.chkCreateToken, "UseCreateToken", false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -331,6 +331,7 @@ CSettingsWindow::CSettingsWindow(QWidget* parent)
|
||||||
connect(ui.chkShellMenu, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
|
connect(ui.chkShellMenu, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
|
||||||
connect(ui.chkAlwaysDefault, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
|
connect(ui.chkAlwaysDefault, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
|
||||||
connect(ui.chkShellMenu2, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
|
connect(ui.chkShellMenu2, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
|
||||||
|
connect(ui.chkShellMenu3, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
|
||||||
|
|
||||||
connect(ui.chkScanMenu, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
|
connect(ui.chkScanMenu, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged()));
|
||||||
connect(ui.cmbIntegrateMenu, SIGNAL(currentIndexChanged(int)), this, SLOT(OnOptChanged()));
|
connect(ui.cmbIntegrateMenu, SIGNAL(currentIndexChanged(int)), this, SLOT(OnOptChanged()));
|
||||||
|
@ -891,6 +892,7 @@ void CSettingsWindow::LoadSettings()
|
||||||
|
|
||||||
ui.chkShellMenu->setCheckState(IsContextMenu());
|
ui.chkShellMenu->setCheckState(IsContextMenu());
|
||||||
ui.chkShellMenu2->setChecked(CSbieUtils::HasContextMenu2());
|
ui.chkShellMenu2->setChecked(CSbieUtils::HasContextMenu2());
|
||||||
|
ui.chkShellMenu3->setChecked(CSbieUtils::HasContextMenu3());
|
||||||
ui.chkAlwaysDefault->setChecked(theConf->GetBool("Options/RunInDefaultBox", false));
|
ui.chkAlwaysDefault->setChecked(theConf->GetBool("Options/RunInDefaultBox", false));
|
||||||
|
|
||||||
ui.cmbDPI->setCurrentIndex(theConf->GetInt("Options/DPIScaling", 1));
|
ui.cmbDPI->setCurrentIndex(theConf->GetInt("Options/DPIScaling", 1));
|
||||||
|
@ -1598,7 +1600,15 @@ void CSettingsWindow::SaveSettings()
|
||||||
} else
|
} else
|
||||||
CSbieUtils::RemoveContextMenu2();
|
CSbieUtils::RemoveContextMenu2();
|
||||||
}
|
}
|
||||||
|
if (ui.chkShellMenu3->isChecked() != CSbieUtils::HasContextMenu3()) {
|
||||||
|
if (ui.chkShellMenu3->isChecked()) {
|
||||||
|
CSbieUtils::AddContextMenu3(QApplication::applicationDirPath().replace("/", "\\") + "\\SandMan.exe",
|
||||||
|
tr("Make Folder/File &Forced"),
|
||||||
|
QApplication::applicationDirPath().replace("/", "\\") + "\\Start.exe");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
CSbieUtils::RemoveContextMenu3();
|
||||||
|
}
|
||||||
theConf->SetValue("Options/RunInDefaultBox", ui.chkAlwaysDefault->isChecked());
|
theConf->SetValue("Options/RunInDefaultBox", ui.chkAlwaysDefault->isChecked());
|
||||||
|
|
||||||
theConf->SetValue("Options/CheckSilentMode", ui.chkSilentMode->isChecked());
|
theConf->SetValue("Options/CheckSilentMode", ui.chkSilentMode->isChecked());
|
||||||
|
|
|
@ -111,6 +111,13 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int DfpPos = Args.indexOf("/disable_force", Qt::CaseInsensitive);
|
int DfpPos = Args.indexOf("/disable_force", Qt::CaseInsensitive);
|
||||||
|
int AfpPos = Args.indexOf("/add_force", Qt::CaseInsensitive);
|
||||||
|
|
||||||
|
//Add_Force has the highest priority.
|
||||||
|
if (AfpPos != -1) {
|
||||||
|
DfpPos = -1;
|
||||||
|
BoxPos = -1;
|
||||||
|
}else
|
||||||
// the first argument wins
|
// the first argument wins
|
||||||
if (BoxPos != -1 && DfpPos != -1) {
|
if (BoxPos != -1 && DfpPos != -1) {
|
||||||
if (BoxPos < DfpPos) DfpPos = -1;
|
if (BoxPos < DfpPos) DfpPos = -1;
|
||||||
|
@ -158,7 +165,13 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
g_PendingMessage += "\nIn:*DFP*";
|
g_PendingMessage += "\nIn:*DFP*";
|
||||||
}
|
}
|
||||||
|
if (AfpPos != -1) {
|
||||||
|
LPWSTR cmdLine0 = wcsstr(GetCommandLineW(), L"/add_force");
|
||||||
|
if (!cmdLine0) return -1;
|
||||||
|
LPWSTR cmdLine = cmdLine0 + 10;
|
||||||
|
g_PendingMessage = "Add:" + QString::fromWCharArray(cmdLine + 1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if (IsBoxed) {
|
if (IsBoxed) {
|
||||||
QMessageBox::critical(NULL, "Sandboxie-Plus", CSandMan::tr("Sandboxie Manager can not be run sandboxed!"));
|
QMessageBox::critical(NULL, "Sandboxie-Plus", CSandMan::tr("Sandboxie Manager can not be run sandboxed!"));
|
||||||
|
|
Loading…
Reference in New Issue