1.12.0
This commit is contained in:
parent
21ddfaae5b
commit
b57e0ed223
|
@ -16,6 +16,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||
- added "get_cert SBIEX-XXXXX-XXXXX-XXXXX-XXXXX" command to UpdUtil.exe allowing to get a cert by serial using command line
|
||||
- added mechanism to revoke leaked or refunded certificates
|
||||
- added new global hot key to bring sandman in fron as top most ALT+Break [#3320](https://github.com/sandboxie-plus/Sandboxie/issues/3320)
|
||||
- added Exclude specific boxes from 'Terminate all processes' [#3108](https://github.com/sandboxie-plus/Sandboxie/issues/3108)
|
||||
- Note: press the panic button hot key 3 times with less then 1 second between clicks to Terminate All with NO exceptions
|
||||
|
||||
### Changed
|
||||
- improved suspend process ahndling [#3375](https://github.com/sandboxie-plus/Sandboxie/issues/3375)
|
||||
|
|
|
@ -1636,14 +1636,19 @@ SB_STATUS CSbieAPI::TerminateAll(const QString& BoxName)
|
|||
return Status;
|
||||
}
|
||||
|
||||
SB_STATUS CSbieAPI::TerminateAll()
|
||||
SB_STATUS CSbieAPI::TerminateAll(bool bNoExceptions)
|
||||
{
|
||||
SB_STATUS Status = SB_OK;
|
||||
#ifdef _DEBUG
|
||||
qDebug() << "TerminateAll" << bNoExceptions;
|
||||
#endif
|
||||
bool bFailed = false;
|
||||
foreach(const CSandBoxPtr& pBox, m_SandBoxes) {
|
||||
if (!bNoExceptions && pBox->GetBool("ExcludeFromTerminateAll", false))
|
||||
continue;
|
||||
if (!pBox->TerminateAll())
|
||||
Status = SB_ERR(SB_FailedKillAll);
|
||||
bFailed = true;
|
||||
}
|
||||
return Status;
|
||||
return bFailed ? SB_ERR(SB_FailedKillAll) : SB_OK;
|
||||
}
|
||||
|
||||
SB_STATUS CSbieAPI::Terminate(quint32 ProcessId)
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
virtual CSandBoxPtr GetBoxByName(const QString &BoxName) const { return m_SandBoxes.value(BoxName.toLower()); }
|
||||
virtual CBoxedProcessPtr GetProcessById(quint32 ProcessId) const;
|
||||
|
||||
virtual SB_STATUS TerminateAll();
|
||||
virtual SB_STATUS TerminateAll(bool bNoExceptions = false);
|
||||
|
||||
virtual SB_STATUS SetProcessExemption(quint32 process_id, quint32 action_id, bool NewState);
|
||||
virtual bool GetProcessExemption(quint32 process_id, quint32 action_id);
|
||||
|
|
|
@ -3470,45 +3470,24 @@ The process match level has a higher priority than the specificity and describes
|
|||
<layout class="QGridLayout" name="gridLayout_63">
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_62">
|
||||
<item row="7" column="1">
|
||||
<spacer name="horizontalSpacer_12">
|
||||
<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="2" column="1">
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="chkElevateCreateProcessFix">
|
||||
<property name="text">
|
||||
<string>Apply ElevateCreateProcess Workaround (legacy behaviour)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="chkPreferExternalManifest">
|
||||
<property name="text">
|
||||
<string>Force usage of custom dummy Manifest files (legacy behaviour)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<item row="6" column="1">
|
||||
<widget class="QCheckBox" name="chkUseSbieWndStation">
|
||||
<property name="text">
|
||||
<string>Emulate sandboxed window station for all processes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="lblCompatibility">
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
<kerning>true</kerning>
|
||||
</font>
|
||||
|
@ -3518,14 +3497,28 @@ The process match level has a higher priority than the specificity and describes
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="chkNestedJobs">
|
||||
<item row="7" column="1">
|
||||
<widget class="QCheckBox" name="chkComTimeout">
|
||||
<property name="text">
|
||||
<string>Allow use of nested job objects (works on Windows 8 and later)</string>
|
||||
<string>Disable the use of RpcMgmtSetComTimeout by default (this may resolve compatibility issues)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="chkPreferExternalManifest">
|
||||
<property name="text">
|
||||
<string>Force usage of custom dummy Manifest files (legacy behaviour)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QCheckBox" name="chkUseSbieDeskHack">
|
||||
<property name="text">
|
||||
<string>Use desktop object workaround for all processes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<spacer name="verticalSpacer_28">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
|
@ -3538,17 +3531,33 @@ The process match level has a higher priority than the specificity and describes
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QCheckBox" name="chkComTimeout">
|
||||
<item row="8" column="1">
|
||||
<spacer name="horizontalSpacer_12">
|
||||
<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="4" column="1">
|
||||
<widget class="QCheckBox" name="chkNestedJobs">
|
||||
<property name="text">
|
||||
<string>Disable the use of RpcMgmtSetComTimeout by default (this may resolve compatibility issues)</string>
|
||||
<string>Allow use of nested job objects (works on Windows 8 and later)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QCheckBox" name="chkUseSbieDeskHack">
|
||||
<item row="0" column="1">
|
||||
<widget class="QCheckBox" name="chkNoPanic">
|
||||
<property name="toolTip">
|
||||
<string>When the global hotkey is pressed 3 times in short succession this exception will be ignored.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use desktop object workaround for all processes</string>
|
||||
<string>Exclude this sandbox from being terminated when "Terminate All Processes" is invoked.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
@ -2577,8 +2577,18 @@ void CSandMan::OnHotKey(size_t id)
|
|||
switch (id)
|
||||
{
|
||||
case HK_PANIC:
|
||||
theAPI->TerminateAll();
|
||||
{
|
||||
// terminate with no exceptions when clicked 3 times
|
||||
static quint64 LastClickTick = 0;
|
||||
static int LastClickCount = 0;
|
||||
if (GetCurTick() - LastClickTick > 1000)
|
||||
LastClickCount = 0;
|
||||
LastClickCount++;
|
||||
if(LastClickCount != 2) // skip second click as it may take more than a second
|
||||
theAPI->TerminateAll(LastClickCount >= 3);
|
||||
LastClickTick = GetCurTick();
|
||||
break;
|
||||
}
|
||||
|
||||
case HK_TOP:
|
||||
if (this->isActiveWindow() && m_bOnTop)
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
|
||||
void COptionsWindow::CreateAdvanced()
|
||||
{
|
||||
connect(ui.chkNoPanic, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
||||
|
||||
connect(ui.chkPreferExternalManifest, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
||||
connect(ui.chkElevateCreateProcessFix, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
|
||||
connect(ui.chkNoWindowRename, SIGNAL(clicked(bool)), this, SLOT(OnNoWindowRename()));
|
||||
|
@ -115,6 +117,8 @@ void COptionsWindow::CreateAdvanced()
|
|||
|
||||
void COptionsWindow::LoadAdvanced()
|
||||
{
|
||||
ui.chkNoPanic->setChecked(m_pBox->GetBool("ExcludeFromTerminateAll", false));
|
||||
|
||||
ui.chkPreferExternalManifest->setChecked(m_pBox->GetBool("PreferExternalManifest", false));
|
||||
ui.chkElevateCreateProcessFix->setChecked(m_pBox->GetBool("ApplyElevateCreateProcessFix", false));
|
||||
|
||||
|
@ -309,6 +313,8 @@ void COptionsWindow::ShowTriggersTmpl(bool bUpdate)
|
|||
|
||||
void COptionsWindow::SaveAdvanced()
|
||||
{
|
||||
WriteAdvancedCheck(ui.chkNoPanic, "ExcludeFromTerminateAll", "y", "");
|
||||
|
||||
WriteAdvancedCheck(ui.chkPreferExternalManifest, "PreferExternalManifest", "y", "");
|
||||
WriteAdvancedCheck(ui.chkElevateCreateProcessFix, "ApplyElevateCreateProcessFix", "y", "");
|
||||
|
||||
|
|
Loading…
Reference in New Issue