diff --git a/Sandboxie/core/dll/guititle.c b/Sandboxie/core/dll/guititle.c
index 455b3bd8..1a0b174b 100644
--- a/Sandboxie/core/dll/guititle.c
+++ b/Sandboxie/core/dll/guititle.c
@@ -95,7 +95,7 @@ _FX BOOLEAN Gui_InitTitle(HMODULE module)
// hook functions
//
- if (! Gui_DisableTitle) {
+ if (! Gui_DisableTitle||SbieApi_QueryConfBool(NULL,"NoTitle",FALSE)) {
SBIEDLL_HOOK_GUI(GetWindowTextW);
SBIEDLL_HOOK_GUI(GetWindowTextA);
@@ -291,7 +291,6 @@ _FX int Gui_FixTitleW(HWND hWnd, WCHAR *lpWindowTitle, int len)
{
if (len >= (int)Gui_TitleSuffixW_len * 2 &&
Gui_ShouldCreateTitle(hWnd)) {
-
if (wmemcmp(lpWindowTitle, &Gui_TitleSuffixW[1], 3) == 0) {
len -= 4;
wmemmove(lpWindowTitle, lpWindowTitle + 4, len);
@@ -326,7 +325,6 @@ _FX int Gui_FixTitleA(HWND hWnd, UCHAR *lpWindowTitle, int len)
{
if (len >= (int)Gui_TitleSuffixA_len * 2 &&
Gui_ShouldCreateTitle(hWnd)) {
-
if (memcmp(lpWindowTitle, &Gui_TitleSuffixA[1], 3) == 0) {
len -= 4;
memmove(lpWindowTitle, lpWindowTitle + 4, len);
diff --git a/SandboxiePlus/SandMan/Forms/OptionsWindow.ui b/SandboxiePlus/SandMan/Forms/OptionsWindow.ui
index 003ea11e..cb253a32 100644
--- a/SandboxiePlus/SandMan/Forms/OptionsWindow.ui
+++ b/SandboxiePlus/SandMan/Forms/OptionsWindow.ui
@@ -285,144 +285,6 @@
File Options
- -
-
-
-
- 20
- 16777215
-
-
-
-
-
-
-
- -
-
-
- Encrypt sandbox content
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 410
- 13
-
-
-
-
- -
-
-
- When <a href="sbie://docs/boxencryption">Box Encryption</a> is enabled the box’s root folder, including its registry hive, is stored in an encrypted disk image, using <a href="https://diskcryptor.org">Disk Cryptor's</a> AES-XTS implementation.
-
-
- true
-
-
- true
-
-
-
- -
-
-
- Warn when an application opens a harddrive handle
-
-
-
- -
-
-
- Set Password
-
-
-
- -
-
-
- Virtualization scheme
-
-
-
- -
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 52
-
-
-
-
- -
-
-
-
- 75
- true
- true
-
-
-
- Disk/File access
-
-
-
- -
-
-
- Allow elevated sandboxed applications to read the harddrive
-
-
-
- -
-
-
- The box structure can only be changed when the sandbox is empty
-
-
-
- -
-
-
- Partially checked means prevent box removal but not content deletion.
-
-
- Protect this sandbox from deletion or emptying
-
-
- true
-
-
-
- -
-
-
- Auto delete content when last sandboxed process terminates
-
-
-
- -
-
-
- <a href="addon://ImDisk">Install ImDisk</a> driver to enable Ram Disk and Disk Image support.
-
-
-
-
@@ -437,7 +299,24 @@
- -
+
-
+
+
+ The box structure can only be changed when the sandbox is empty
+
+
+
+ -
+
+
+ Virtualization scheme
+
+
+
+ -
+
+
+ -
Separate user folders
@@ -447,14 +326,62 @@
- -
+
-
+
+
+ Use volume serial numbers for drives, like: \drive\C~1234-ABCD
+
+
+
+ -
Store the sandbox content in a Ram Disk
- -
+
-
+
+
+ Encrypt sandbox content
+
+
+
+ -
+
+
+ Set Password
+
+
+
+ -
+
+
+ When <a href="sbie://docs/boxencryption">Box Encryption</a> is enabled the box’s root folder, including its registry hive, is stored in an encrypted disk image, using <a href="https://diskcryptor.org">Disk Cryptor's</a> AES-XTS implementation.
+
+
+ true
+
+
+ true
+
+
+
+ -
+
+
+ <a href="addon://ImDisk">Install ImDisk</a> driver to enable Ram Disk and Disk Image support.
+
+
+
+ -
+
+
+ Force protection on mount
+
+
+
+ -
@@ -468,13 +395,93 @@
- -
-
+
-
+
- Use volume serial numbers for drives, like: \drive\C~1234-ABCD
+ Auto delete content when last sandboxed process terminates
+ -
+
+
+ Partially checked means prevent box removal but not content deletion.
+
+
+ Protect this sandbox from deletion or emptying
+
+
+ true
+
+
+
+ -
+
+
+
+ 75
+ true
+ true
+
+
+
+ Disk/File access
+
+
+
+ -
+
+
+
+ 20
+ 16777215
+
+
+
+
+
+
+
+ -
+
+
+ Allow elevated sandboxed applications to read the harddrive
+
+
+
+ -
+
+
+ Warn when an application opens a harddrive handle
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 52
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 410
+ 13
+
+
+
+
@@ -4585,8 +4592,8 @@ instead of "*".
0
0
- 98
- 28
+ 92
+ 16
diff --git a/SandboxiePlus/SandMan/SandMan.cpp b/SandboxiePlus/SandMan/SandMan.cpp
index 2c11443c..3ad2037c 100644
--- a/SandboxiePlus/SandMan/SandMan.cpp
+++ b/SandboxiePlus/SandMan/SandMan.cpp
@@ -1716,6 +1716,7 @@ SB_STATUS CSandMan::ImBoxMount(const CSandBoxPtr& pBox, bool bAutoUnmount)
}
CBoxImageWindow window(CBoxImageWindow::eMount, this);
+ window.SetForce(pBox->GetBool("ForceProtectionOnMount", false));
window.SetAutoUnMount(bAutoUnmount);
if (theGUI->SafeExec(&window) != 1)
return SB_ERR(SB_Canceled);
diff --git a/SandboxiePlus/SandMan/Windows/BoxImageWindow.cpp b/SandboxiePlus/SandMan/Windows/BoxImageWindow.cpp
index 05b3a6d4..3d16efc1 100644
--- a/SandboxiePlus/SandMan/Windows/BoxImageWindow.cpp
+++ b/SandboxiePlus/SandMan/Windows/BoxImageWindow.cpp
@@ -97,10 +97,17 @@ CBoxImageWindow::CBoxImageWindow(EAction Action, QWidget *parent)
ui.chkProtect->setVisible(false);
ui.chkAutoLock->setVisible(false);
}
-
+
+
+
//restoreGeometry(theConf->GetBlob("BoxImageWindow/Window_Geometry"));
}
-
+void CBoxImageWindow::SetForce(bool force) {
+ ui.chkProtect->setEnabled(!force);
+ ui.chkProtect->setChecked(true);
+ ui.chkAutoLock->setChecked(true);
+ ui.chkAutoLock->setEnabled(!force);
+}
CBoxImageWindow::~CBoxImageWindow()
{
//theConf->SetBlob("BoxImageWindow/Window_Geometry", saveGeometry());
diff --git a/SandboxiePlus/SandMan/Windows/BoxImageWindow.h b/SandboxiePlus/SandMan/Windows/BoxImageWindow.h
index 2531e226..ae061f0e 100644
--- a/SandboxiePlus/SandMan/Windows/BoxImageWindow.h
+++ b/SandboxiePlus/SandMan/Windows/BoxImageWindow.h
@@ -22,6 +22,7 @@ public:
QString GetPassword() const { return m_Password; }
QString GetNewPassword() const { return m_NewPassword; }
+ void SetForce(bool force);
void SetImageSize(quint64 uSize) const { return ui.txtImageSize->setText(QString::number(uSize / 1024)); }
quint64 GetImageSize() const { return ui.txtImageSize->text().toULongLong() * 1024; }
bool UseProtection() const { return ui.chkProtect->isChecked(); }
diff --git a/SandboxiePlus/SandMan/Windows/OptionsGeneral.cpp b/SandboxiePlus/SandMan/Windows/OptionsGeneral.cpp
index 0544d3b3..e0042e34 100644
--- a/SandboxiePlus/SandMan/Windows/OptionsGeneral.cpp
+++ b/SandboxiePlus/SandMan/Windows/OptionsGeneral.cpp
@@ -190,6 +190,7 @@ void COptionsWindow::CreateGeneral()
connect(ui.chkRamBox, SIGNAL(clicked(bool)), this, SLOT(OnDiskChanged()));
connect(ui.chkEncrypt, SIGNAL(clicked(bool)), this, SLOT(OnDiskChanged()));
+ connect(ui.chkForceProtection, SIGNAL(clicked(bool)), this, SLOT(OnGeneralChanged()));
connect(ui.btnPassword, SIGNAL(clicked(bool)), this, SLOT(OnSetPassword()));
bool bImDiskReady = theGUI->IsImDiskReady();
@@ -330,8 +331,11 @@ void COptionsWindow::LoadGeneral()
ui.chkRamBox->setChecked(m_pBox->GetBool("UseRamDisk", false));
ui.chkEncrypt->setChecked(m_pBox->GetBool("UseFileImage", false));
- if (ui.chkRamBox->isEnabled())
+ ui.chkForceProtection->setChecked(m_pBox->GetBool("ForceProtectionOnMount", false));
+ if (ui.chkRamBox->isEnabled()) {
ui.chkEncrypt->setEnabled(!ui.chkRamBox->isChecked());
+ ui.chkForceProtection->setEnabled(!ui.chkRamBox->isChecked());
+ }
CSandBoxPlus* pBoxEx = qobject_cast(m_pBox.data());
if (pBoxEx && QFile::exists(pBoxEx->GetBoxImagePath()))
{
@@ -422,6 +426,7 @@ void COptionsWindow::SaveGeneral()
WriteAdvancedCheck(ui.chkCloseClipBoard, "OpenClipboard", "n", "");
//WriteAdvancedCheck(ui.chkBlockCapture, "IsBlockCapture", "y", "n");
WriteAdvancedCheck(ui.chkProtectPower, "BlockInterferePower", "y", "n");
+ WriteAdvancedCheck(ui.chkForceProtection, "ForceProtectionOnMount", "y", "n");
WriteAdvancedCheck(ui.chkVmReadNotify, "NotifyProcessAccessDenied", "y", "");
//WriteAdvancedCheck(ui.chkOpenSmartCard, "OpenSmartCard", "", "n");
//WriteAdvancedCheck(ui.chkOpenBluetooth, "OpenBluetooth", "y", "");
@@ -1127,11 +1132,13 @@ void COptionsWindow::OnDiskChanged()
ui.chkEncrypt->setEnabled(false);
ui.chkEncrypt->setChecked(false);
ui.btnPassword->setEnabled(false);
+ ui.chkForceProtection->setEnabled(false);
}
else {
ui.chkEncrypt->setEnabled(true);
CSandBoxPlus* pBoxEx = qobject_cast(m_pBox.data());
ui.btnPassword->setEnabled(ui.chkEncrypt->isChecked() && pBoxEx && pBoxEx->GetMountRoot().isEmpty());
+ ui.chkForceProtection->setEnabled(ui.chkEncrypt->isChecked());
}
OnGeneralChanged();