1.13.4
This commit is contained in:
parent
7844ac848e
commit
3c86286bf5
|
@ -10,6 +10,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
- added option to prevent sandboxed processes from accessing the images of the window outside the sandbox [#1985](https://github.com/sandboxie-plus/Sandboxie/issues/1985) (thanks Yeyixiao)
|
- added option to prevent sandboxed processes from accessing the images of the window outside the sandbox [#1985](https://github.com/sandboxie-plus/Sandboxie/issues/1985) (thanks Yeyixiao)
|
||||||
- it can be enabled with "IsBlockCapture=y"
|
- it can be enabled with "IsBlockCapture=y"
|
||||||
- see the sandbox option "Prevent sandboxed processes from using public methods to capture window images" in SandMan UI
|
- see the sandbox option "Prevent sandboxed processes from using public methods to capture window images" in SandMan UI
|
||||||
|
- added "LingerExemptWnds=n" to make the lingering process monitor mechanism no longer exempt lingering processes with windows from termination
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- option "LingerLeniency=n" now also disabled the 5 sec grace period for freshly started lingerers [#1892](https://github.com/sandboxie-plus/Sandboxie/issues/1892)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- fixed issue with symlinks related to startmenu folders
|
- fixed issue with symlinks related to startmenu folders
|
||||||
|
|
|
@ -538,7 +538,7 @@ int DoLingerLeader(void)
|
||||||
// don't terminate if a lingering process has an open window
|
// don't terminate if a lingering process has an open window
|
||||||
//
|
//
|
||||||
|
|
||||||
if (terminate_and_stop) {
|
if (terminate_and_stop && SbieApi_QueryConfBool(NULL, L"LingerExemptWnds", TRUE)) {
|
||||||
|
|
||||||
//
|
//
|
||||||
// if a process in the PID list has a window LingerEnumWindowsProc will return FALSE
|
// if a process in the PID list has a window LingerEnumWindowsProc will return FALSE
|
||||||
|
@ -554,7 +554,7 @@ int DoLingerLeader(void)
|
||||||
// don't terminate if a lingering process has just started recently
|
// don't terminate if a lingering process has just started recently
|
||||||
//
|
//
|
||||||
|
|
||||||
if (terminate_and_stop) {
|
if (terminate_and_stop && SbieApi_QueryConfBool(NULL, L"LingerLeniency", TRUE)) {
|
||||||
for (i = 0; i < process_count; ++i) {
|
for (i = 0; i < process_count; ++i) {
|
||||||
HANDLE hProcess = NULL;
|
HANDLE hProcess = NULL;
|
||||||
ULONG64 ProcessFlags = SbieApi_QueryProcessInfo(
|
ULONG64 ProcessFlags = SbieApi_QueryProcessInfo(
|
||||||
|
|
|
@ -2076,7 +2076,7 @@
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QTabWidget" name="tabsStop">
|
<widget class="QTabWidget" name="tabsStop">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tabLingerer">
|
<widget class="QWidget" name="tabLingerer">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
@ -2097,33 +2097,6 @@
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<layout class="QGridLayout" name="gridLayout_14">
|
<layout class="QGridLayout" name="gridLayout_14">
|
||||||
<item row="3" column="1">
|
|
||||||
<spacer name="verticalSpacer_6">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="1">
|
|
||||||
<widget class="QPushButton" name="btnDelStopProg">
|
|
||||||
<property name="text">
|
|
||||||
<string>Remove</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="1">
|
|
||||||
<widget class="QCheckBox" name="chkShowStopTmpl">
|
|
||||||
<property name="text">
|
|
||||||
<string>Show Templates</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QPushButton" name="btnAddLingering">
|
<widget class="QPushButton" name="btnAddLingering">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -2143,6 +2116,13 @@
|
||||||
</column>
|
</column>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QCheckBox" name="chkShowStopTmpl">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show Templates</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -2153,6 +2133,26 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QPushButton" name="btnDelStopProg">
|
||||||
|
<property name="text">
|
||||||
|
<string>Remove</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<spacer name="verticalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
@ -2236,6 +2236,73 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QWidget" name="tabStopOpt">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Stop Options</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_82">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<layout class="QGridLayout" name="gridLayout_37">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="lblStopOpt">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<bold>true</bold>
|
||||||
|
<kerning>true</kerning>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Stop Behavioure</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QCheckBox" name="chkLingerLeniency">
|
||||||
|
<property name="text">
|
||||||
|
<string>Use Linger Leniency</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QCheckBox" name="chkNoStopWnd">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Don't stop lingering processes with windows</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<spacer name="horizontalSpacer_20">
|
||||||
|
<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="3" column="0">
|
||||||
|
<spacer name="verticalSpacer_40">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
|
|
@ -25,6 +25,9 @@ void COptionsWindow::LoadStop()
|
||||||
AddLeaderEntry(Value, true);
|
AddLeaderEntry(Value, true);
|
||||||
LoadLeaderTmpl();
|
LoadLeaderTmpl();
|
||||||
|
|
||||||
|
ui.chkNoStopWnd->setChecked(m_pBox->GetBool("LingerExemptWnds", true));
|
||||||
|
ui.chkLingerLeniency->setChecked(m_pBox->GetBool("LingerLeniency", true));
|
||||||
|
|
||||||
m_StopChanged = false;
|
m_StopChanged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,6 +137,9 @@ void COptionsWindow::SaveStop()
|
||||||
WriteTextList("LeaderProcess", LeaderProcess);
|
WriteTextList("LeaderProcess", LeaderProcess);
|
||||||
WriteTextList("LeaderProcessDisabled", LeaderProcessDisabled);
|
WriteTextList("LeaderProcessDisabled", LeaderProcessDisabled);
|
||||||
|
|
||||||
|
WriteAdvancedCheck(ui.chkNoStopWnd, "LingerExemptWnds", "", "n");
|
||||||
|
WriteAdvancedCheck(ui.chkLingerLeniency, "LingerLeniency", "", "n");
|
||||||
|
|
||||||
m_StopChanged = false;
|
m_StopChanged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -222,6 +222,7 @@ COptionsWindow::COptionsWindow(const QSharedPointer<CSbieIni>& pBox, const QStri
|
||||||
ui.tabsStop->setCurrentIndex(0);
|
ui.tabsStop->setCurrentIndex(0);
|
||||||
ui.tabsStop->setTabIcon(0, CSandMan::GetIcon("Fail"));
|
ui.tabsStop->setTabIcon(0, CSandMan::GetIcon("Fail"));
|
||||||
ui.tabsStop->setTabIcon(1, CSandMan::GetIcon("Pass"));
|
ui.tabsStop->setTabIcon(1, CSandMan::GetIcon("Pass"));
|
||||||
|
ui.tabsStop->setTabIcon(2, CSandMan::GetIcon("Policy"));
|
||||||
|
|
||||||
ui.tabsInternet->setCurrentIndex(0);
|
ui.tabsInternet->setCurrentIndex(0);
|
||||||
ui.tabsInternet->setTabIcon(0, CSandMan::GetIcon("Program"));
|
ui.tabsInternet->setTabIcon(0, CSandMan::GetIcon("Program"));
|
||||||
|
@ -306,6 +307,13 @@ COptionsWindow::COptionsWindow(const QSharedPointer<CSbieIni>& pBox, const QStri
|
||||||
QWidget* pWidget2 = new QWidget();
|
QWidget* pWidget2 = new QWidget();
|
||||||
pWidget2->setLayout(ui.gridLayout_61);
|
pWidget2->setLayout(ui.gridLayout_61);
|
||||||
ui.gridLayout_17->addWidget(pWidget2, 2, 0);
|
ui.gridLayout_17->addWidget(pWidget2, 2, 0);
|
||||||
|
QWidget* pWidget3 = new QWidget();
|
||||||
|
pWidget3->setLayout(ui.gridLayout_82);
|
||||||
|
ui.gridLayout_82->setContentsMargins(3, 3, 3, 3);
|
||||||
|
ui.verticalSpacer_40->changeSize(0, 0);
|
||||||
|
ui.lblStopOpt->setVisible(false);
|
||||||
|
ui.lblStopOpt->setProperty("hidden", true);
|
||||||
|
ui.gridLayout_17->addWidget(pWidget3, 3, 0);
|
||||||
delete ui.tabsStop;
|
delete ui.tabsStop;
|
||||||
ui.gridLayout_17->setContentsMargins(0, 0, 0, 0);
|
ui.gridLayout_17->setContentsMargins(0, 0, 0, 0);
|
||||||
|
|
||||||
|
@ -364,6 +372,8 @@ COptionsWindow::COptionsWindow(const QSharedPointer<CSbieIni>& pBox, const QStri
|
||||||
AddIconToLabel(ui.lblPrinting, CSandMan::GetIcon("Printer").pixmap(size,size));
|
AddIconToLabel(ui.lblPrinting, CSandMan::GetIcon("Printer").pixmap(size,size));
|
||||||
AddIconToLabel(ui.lblOther, CSandMan::GetIcon("NoAccess").pixmap(size,size));
|
AddIconToLabel(ui.lblOther, CSandMan::GetIcon("NoAccess").pixmap(size,size));
|
||||||
|
|
||||||
|
AddIconToLabel(ui.lblStopOpt, CSandMan::GetIcon("Stop").pixmap(size,size));
|
||||||
|
|
||||||
AddIconToLabel(ui.lblMode, CSandMan::GetIcon("Anon").pixmap(size,size));
|
AddIconToLabel(ui.lblMode, CSandMan::GetIcon("Anon").pixmap(size,size));
|
||||||
AddIconToLabel(ui.lblPolicy, CSandMan::GetIcon("Policy").pixmap(size,size));
|
AddIconToLabel(ui.lblPolicy, CSandMan::GetIcon("Policy").pixmap(size,size));
|
||||||
|
|
||||||
|
@ -476,13 +486,16 @@ COptionsWindow::COptionsWindow(const QSharedPointer<CSbieIni>& pBox, const QStri
|
||||||
connect(ui.btnDelStopProg, SIGNAL(clicked(bool)), this, SLOT(OnDelStopProg()));
|
connect(ui.btnDelStopProg, SIGNAL(clicked(bool)), this, SLOT(OnDelStopProg()));
|
||||||
connect(ui.chkShowStopTmpl, SIGNAL(clicked(bool)), this, SLOT(OnShowStopTmpl()));
|
connect(ui.chkShowStopTmpl, SIGNAL(clicked(bool)), this, SLOT(OnShowStopTmpl()));
|
||||||
ui.treeStop->setItemDelegateForColumn(0, new ProgramsDelegate(this, ui.treeStop, -1, this));
|
ui.treeStop->setItemDelegateForColumn(0, new ProgramsDelegate(this, ui.treeStop, -1, this));
|
||||||
connect(ui.treeStop, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(OnStopChanged(QTreeWidgetItem *, int)));
|
connect(ui.treeStop, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(OnStopChanged()));
|
||||||
|
|
||||||
connect(ui.btnAddLeader, SIGNAL(clicked(bool)), this, SLOT(OnAddLeader()));
|
connect(ui.btnAddLeader, SIGNAL(clicked(bool)), this, SLOT(OnAddLeader()));
|
||||||
connect(ui.btnDelLeader, SIGNAL(clicked(bool)), this, SLOT(OnDelLeader()));
|
connect(ui.btnDelLeader, SIGNAL(clicked(bool)), this, SLOT(OnDelLeader()));
|
||||||
connect(ui.chkShowLeaderTmpl, SIGNAL(clicked(bool)), this, SLOT(OnShowLeaderTmpl()));
|
connect(ui.chkShowLeaderTmpl, SIGNAL(clicked(bool)), this, SLOT(OnShowLeaderTmpl()));
|
||||||
ui.treeLeader->setItemDelegateForColumn(0, new ProgramsDelegate(this, ui.treeLeader, -1, this));
|
ui.treeLeader->setItemDelegateForColumn(0, new ProgramsDelegate(this, ui.treeLeader, -1, this));
|
||||||
connect(ui.treeLeader, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(OnStopChanged(QTreeWidgetItem *, int)));
|
connect(ui.treeLeader, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(OnStopChanged()));
|
||||||
|
|
||||||
|
connect(ui.chkNoStopWnd, SIGNAL(clicked(bool)), this, SLOT(OnStopChanged()));
|
||||||
|
connect(ui.chkLingerLeniency, SIGNAL(clicked(bool)), this, SLOT(OnStopChanged()));
|
||||||
//
|
//
|
||||||
|
|
||||||
// Start
|
// Start
|
||||||
|
|
|
@ -101,7 +101,7 @@ private slots:
|
||||||
void OnAddLingering();
|
void OnAddLingering();
|
||||||
void OnDelStopProg();
|
void OnDelStopProg();
|
||||||
void OnShowStopTmpl() { LoadStopTmpl(true); }
|
void OnShowStopTmpl() { LoadStopTmpl(true); }
|
||||||
void OnStopChanged(QTreeWidgetItem* pItem, int Index) { m_StopChanged = true; OnOptChanged(); }
|
void OnStopChanged() { m_StopChanged = true; OnOptChanged(); }
|
||||||
void OnAddLeader();
|
void OnAddLeader();
|
||||||
void OnDelLeader();
|
void OnDelLeader();
|
||||||
void OnShowLeaderTmpl() { LoadLeaderTmpl(true); }
|
void OnShowLeaderTmpl() { LoadLeaderTmpl(true); }
|
||||||
|
|
|
@ -49,6 +49,7 @@ void FixTriStateBoxPallete(QWidget* pWidget)
|
||||||
|
|
||||||
void AddIconToLabel(QLabel* pLabel, const QPixmap& Pixmap)
|
void AddIconToLabel(QLabel* pLabel, const QPixmap& Pixmap)
|
||||||
{
|
{
|
||||||
|
if (pLabel->property("hidden").toBool()) return;
|
||||||
QWidget* pParent = pLabel->parentWidget();
|
QWidget* pParent = pLabel->parentWidget();
|
||||||
QWidget* pWidget = new QWidget(pParent);
|
QWidget* pWidget = new QWidget(pParent);
|
||||||
pParent->layout()->replaceWidget(pLabel, pWidget);
|
pParent->layout()->replaceWidget(pLabel, pWidget);
|
||||||
|
@ -480,6 +481,7 @@ CSettingsWindow::CSettingsWindow(QWidget* parent)
|
||||||
connect(ui.lblSupport, SIGNAL(linkActivated(const QString&)), theGUI, SLOT(OpenUrl(const QString&)));
|
connect(ui.lblSupport, SIGNAL(linkActivated(const QString&)), theGUI, SLOT(OpenUrl(const QString&)));
|
||||||
connect(ui.lblSupportCert, SIGNAL(linkActivated(const QString&)), theGUI, SLOT(OpenUrl(const QString&)));
|
connect(ui.lblSupportCert, SIGNAL(linkActivated(const QString&)), theGUI, SLOT(OpenUrl(const QString&)));
|
||||||
connect(ui.lblCertExp, SIGNAL(linkActivated(const QString&)), theGUI, SLOT(OpenUrl(const QString&)));
|
connect(ui.lblCertExp, SIGNAL(linkActivated(const QString&)), theGUI, SLOT(OpenUrl(const QString&)));
|
||||||
|
connect(ui.lblCertGuide, SIGNAL(linkActivated(const QString&)), theGUI, SLOT(OpenUrl(const QString&)));
|
||||||
connect(ui.lblInsiderInfo, SIGNAL(linkActivated(const QString&)), theGUI, SLOT(OpenUrl(const QString&)));
|
connect(ui.lblInsiderInfo, SIGNAL(linkActivated(const QString&)), theGUI, SLOT(OpenUrl(const QString&)));
|
||||||
|
|
||||||
m_CertChanged = false;
|
m_CertChanged = false;
|
||||||
|
@ -925,7 +927,7 @@ void CSettingsWindow::LoadSettings()
|
||||||
ui.keyPauseForce->setKeySequence(QKeySequence(theConf->GetString("Options/PauseForceKeySequence", "Ctrl+Alt+F")));
|
ui.keyPauseForce->setKeySequence(QKeySequence(theConf->GetString("Options/PauseForceKeySequence", "Ctrl+Alt+F")));
|
||||||
|
|
||||||
ui.chkSuspend->setChecked(theConf->GetBool("Options/EnableSuspendKey", false));
|
ui.chkSuspend->setChecked(theConf->GetBool("Options/EnableSuspendKey", false));
|
||||||
ui.keySuspend->setKeySequence(QKeySequence(theConf->GetString("Options/SuspendKeySequence", "Ctrl+Pause")));
|
ui.keySuspend->setKeySequence(QKeySequence(theConf->GetString("Options/SuspendKeySequence", "Shift+Alt+Pause")));
|
||||||
|
|
||||||
ui.chkMonitorSize->setChecked(theConf->GetBool("Options/WatchBoxSize", false));
|
ui.chkMonitorSize->setChecked(theConf->GetBool("Options/WatchBoxSize", false));
|
||||||
|
|
||||||
|
@ -1664,7 +1666,6 @@ void CSettingsWindow::SaveSettings()
|
||||||
|
|
||||||
WriteAdvancedCheck(ui.chkAdminOnlyFP, "ForceDisableAdminOnly", "y", "");
|
WriteAdvancedCheck(ui.chkAdminOnlyFP, "ForceDisableAdminOnly", "y", "");
|
||||||
WriteAdvancedCheck(ui.chkClearPass, "ForgetPassword", "y", "");
|
WriteAdvancedCheck(ui.chkClearPass, "ForgetPassword", "y", "");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_WarnProgsChanged)
|
if (m_WarnProgsChanged)
|
||||||
|
|
Loading…
Reference in New Issue