Merge pull request #3713 from love-code-yeyixiao/master

Update Sandman
This commit is contained in:
DavidXanatos 2024-03-17 13:23:05 +01:00 committed by GitHub
commit 447c5cac63
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 301 additions and 278 deletions

View File

@ -55,7 +55,7 @@
<item row="0" column="0"> <item row="0" column="0">
<widget class="QTabWidget" name="tabsGeneral"> <widget class="QTabWidget" name="tabsGeneral">
<property name="currentIndex"> <property name="currentIndex">
<number>3</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="tabOptions"> <widget class="QWidget" name="tabOptions">
<attribute name="title"> <attribute name="title">
@ -284,200 +284,196 @@
<attribute name="title"> <attribute name="title">
<string>File Options</string> <string>File Options</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_30"> <layout class="QGridLayout" name="gridLayout_28">
<item row="13" 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="5" column="1" colspan="4">
<widget class="QCheckBox" name="chkEncrypt">
<property name="text">
<string>Encrypt sandbox content</string>
</property>
</widget>
</item>
<item row="14" column="3">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>410</width>
<height>13</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="2" colspan="4">
<widget class="QLabel" name="lblCrypto">
<property name="text">
<string>When &lt;a href=&quot;sbie://docs/boxencryption&quot;&gt;Box Encryption&lt;/a&gt; is enabled the boxs root folder, including its registry hive, is stored in an encrypted disk image, using &lt;a href=&quot;https://diskcryptor.org&quot;&gt;Disk Cryptor's&lt;/a&gt; AES-XTS implementation.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item row="13" column="2" colspan="4">
<widget class="QCheckBox" name="chkRawDiskNotify">
<property name="text">
<string>Warn when an application opens a harddrive handle</string>
</property>
</widget>
</item>
<item row="5" column="5">
<widget class="QToolButton" name="btnPassword">
<property name="text">
<string>Set Password</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="3">
<widget class="QLabel" name="lblScheme">
<property name="text">
<string>Virtualization scheme</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QComboBox" name="cmbVersion"/>
</item>
<item row="14" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>52</height>
</size>
</property>
</spacer>
</item>
<item row="11" column="0" colspan="2">
<widget class="QLabel" name="lblRawDisk">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
<kerning>true</kerning>
</font>
</property>
<property name="text">
<string>Disk/File access</string>
</property>
</widget>
</item>
<item row="12" column="1" colspan="5">
<widget class="QCheckBox" name="chkRawDiskRead">
<property name="text">
<string>Allow elevated sandboxed applications to read the harddrive</string>
</property>
</widget>
</item>
<item row="0" column="2" colspan="4">
<widget class="QLabel" name="lblWhenEmpty">
<property name="text">
<string>The box structure can only be changed when the sandbox is empty</string>
</property>
</widget>
</item>
<item row="10" column="1" colspan="4">
<widget class="QCheckBox" name="chkProtectBox">
<property name="toolTip">
<string>Partially checked means prevent box removal but not content deletion.</string>
</property>
<property name="text">
<string>Protect this sandbox from deletion or emptying</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</item>
<item row="9" column="1" colspan="5">
<widget class="QCheckBox" name="chkAutoEmpty">
<property name="text">
<string>Auto delete content when last sandboxed process terminates</string>
</property>
</widget>
</item>
<item row="7" column="2" colspan="4">
<widget class="QLabel" name="lblImDisk">
<property name="text">
<string>&lt;a href=&quot;addon://ImDisk&quot;&gt;Install ImDisk&lt;/a&gt; driver to enable Ram Disk and Disk Image support.</string>
</property>
</widget>
</item>
<item row="0" column="0"> <item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_28"> <widget class="QLabel" name="lblStructure">
<item row="11" column="0" colspan="2"> <property name="font">
<widget class="QLabel" name="lblRawDisk"> <font>
<property name="font"> <weight>75</weight>
<font> <bold>true</bold>
<weight>75</weight> <kerning>true</kerning>
<bold>true</bold> </font>
<kerning>true</kerning> </property>
</font> <property name="text">
</property> <string>Box Structure</string>
<property name="text"> </property>
<string>Disk/File access</string> </widget>
</property> </item>
</widget> <item row="2" column="1" colspan="4">
</item> <widget class="QCheckBox" name="chkSeparateUserFolders">
<item row="3" column="1" colspan="5"> <property name="text">
<widget class="QCheckBox" name="chkUseVolumeSerialNumbers"> <string>Separate user folders</string>
<property name="text"> </property>
<string>Use volume serial numbers for drives, like: \drive\C~1234-ABCD</string> <property name="tristate">
</property> <bool>false</bool>
</widget> </property>
</item> </widget>
<item row="13" column="1"> </item>
<widget class="QLabel" name="label_37"> <item row="4" column="1" colspan="4">
<property name="maximumSize"> <widget class="QCheckBox" name="chkRamBox">
<size> <property name="text">
<width>20</width> <string>Store the sandbox content in a Ram Disk</string>
<height>16777215</height> </property>
</size> </widget>
</property> </item>
<property name="text"> <item row="8" column="0" colspan="3">
<string/> <widget class="QLabel" name="lblDelete">
</property> <property name="font">
</widget> <font>
</item> <weight>75</weight>
<item row="14" column="2" colspan="5"> <bold>true</bold>
<spacer name="horizontalSpacer_4"> <kerning>true</kerning>
<property name="orientation"> </font>
<enum>Qt::Horizontal</enum> </property>
</property> <property name="text">
<property name="sizeHint" stdset="0"> <string>Box Delete options</string>
<size> </property>
<width>40</width> </widget>
<height>0</height> </item>
</size> <item row="3" column="1" colspan="5">
</property> <widget class="QCheckBox" name="chkUseVolumeSerialNumbers">
</spacer> <property name="text">
</item> <string>Use volume serial numbers for drives, like: \drive\C~1234-ABCD</string>
<item row="5" column="1" colspan="4"> </property>
<widget class="QCheckBox" name="chkEncrypt"> </widget>
<property name="text">
<string>Encrypt sandbox content</string>
</property>
</widget>
</item>
<item row="9" column="1" colspan="6">
<widget class="QCheckBox" name="chkAutoEmpty">
<property name="text">
<string>Auto delete content when last sandboxed process terminates</string>
</property>
</widget>
</item>
<item row="6" column="2" colspan="4">
<widget class="QLabel" name="lblCrypto">
<property name="text">
<string>When &lt;a href=&quot;sbie://docs/boxencryption&quot;&gt;Box Encryption&lt;/a&gt; is enabled the boxs root folder, including its registry hive, is stored in an encrypted disk image, using &lt;a href=&quot;https://diskcryptor.org&quot;&gt;Disk Cryptor's&lt;/a&gt; AES-XTS implementation.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item row="8" column="0" colspan="3">
<widget class="QLabel" name="lblDelete">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
<kerning>true</kerning>
</font>
</property>
<property name="text">
<string>Box Delete options</string>
</property>
</widget>
</item>
<item row="14" column="1">
<spacer name="verticalSpacer_2">
<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="12" column="1" colspan="6">
<widget class="QCheckBox" name="chkRawDiskRead">
<property name="text">
<string>Allow elevated sandboxed applications to read the harddrive</string>
</property>
</widget>
</item>
<item row="10" column="1" colspan="6">
<widget class="QCheckBox" name="chkProtectBox">
<property name="toolTip">
<string>Partially checked means prevent box removal but not content deletion.</string>
</property>
<property name="text">
<string>Protect this sandbox from deletion or emptying</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="2" colspan="4">
<widget class="QLabel" name="lblImDisk">
<property name="text">
<string>&lt;a href=&quot;addon://ImDisk&quot;&gt;Install ImDisk&lt;/a&gt; driver to enable Ram Disk and Disk Image support.</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="5">
<widget class="QCheckBox" name="chkSeparateUserFolders">
<property name="text">
<string>Separate user folders</string>
</property>
<property name="tristate">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lblStructure">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
<kerning>true</kerning>
</font>
</property>
<property name="text">
<string>Box Structure</string>
</property>
</widget>
</item>
<item row="4" column="1" colspan="4">
<widget class="QCheckBox" name="chkRamBox">
<property name="text">
<string>Store the sandbox content in a Ram Disk</string>
</property>
</widget>
</item>
<item row="13" column="2" colspan="5">
<widget class="QCheckBox" name="chkRawDiskNotify">
<property name="text">
<string>Warn when an application opens a harddrive handle</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QComboBox" name="cmbVersion"/>
</item>
<item row="5" column="5">
<widget class="QToolButton" name="btnPassword">
<property name="text">
<string>Set Password</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QLabel" name="lblScheme">
<property name="text">
<string>Virtualization scheme</string>
</property>
</widget>
</item>
<item row="0" column="2" colspan="4">
<widget class="QLabel" name="lblWhenEmpty">
<property name="text">
<string>The box structure can only be changed when the sandbox is empty</string>
</property>
</widget>
</item>
</layout>
</item> </item>
</layout> </layout>
</widget> </widget>
@ -4522,8 +4518,8 @@ instead of &quot;*&quot;.</string>
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>75</width> <width>98</width>
<height>16</height> <height>28</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="dbgLayout"> <layout class="QGridLayout" name="dbgLayout">

View File

@ -48,7 +48,7 @@
<enum>QTabWidget::North</enum> <enum>QTabWidget::North</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>5</number>
</property> </property>
<widget class="QWidget" name="tabGeneral"> <widget class="QWidget" name="tabGeneral">
<attribute name="title"> <attribute name="title">
@ -449,7 +449,7 @@
<item row="0" column="0"> <item row="0" column="0">
<widget class="QTabWidget" name="tabsShell"> <widget class="QTabWidget" name="tabsShell">
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="tabWindows"> <widget class="QWidget" name="tabWindows">
<attribute name="title"> <attribute name="title">
@ -1689,6 +1689,7 @@
<widget class="QLabel" name="lblCertGuide"> <widget class="QLabel" name="lblCertGuide">
<property name="font"> <property name="font">
<font> <font>
<weight>75</weight>
<bold>true</bold> <bold>true</bold>
<kerning>true</kerning> <kerning>true</kerning>
</font> </font>
@ -1940,7 +1941,7 @@ Unlike the preview channel, it does not include untested, potentially breaking,
<item row="0" column="0"> <item row="0" column="0">
<widget class="QTabWidget" name="tabsAdvanced"> <widget class="QTabWidget" name="tabsAdvanced">
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="tabSandbox"> <widget class="QWidget" name="tabSandbox">
<attribute name="title"> <attribute name="title">
@ -2159,79 +2160,88 @@ Unlike the preview channel, it does not include untested, potentially breaking,
<attribute name="title"> <attribute name="title">
<string>Sandboxie.ini Presets</string> <string>Sandboxie.ini Presets</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_21"> <layout class="QGridLayout" name="gridLayout_19">
<item row="0" column="0"> <item row="7" column="0">
<layout class="QGridLayout" name="gridLayout_19"> <spacer name="verticalSpacer_7">
<item row="3" column="2"> <property name="orientation">
<widget class="QPushButton" name="btnSetPassword"> <enum>Qt::Vertical</enum>
<property name="text"> </property>
<string>Change Password</string> <property name="sizeHint" stdset="0">
</property> <size>
</widget> <width>20</width>
</item> <height>211</height>
<item row="3" column="1"> </size>
<widget class="QCheckBox" name="chkPassRequired"> </property>
<property name="text"> </spacer>
<string>Password must be entered in order to make changes</string> </item>
</property> <item row="6" column="2">
</widget> <widget class="QCheckBox" name="chkClearPass">
</item> <property name="text">
<item row="6" column="1"> <string>Clear password when main window becomes hidden</string>
<spacer name="verticalSpacer_7"> </property>
<property name="orientation"> </widget>
<enum>Qt::Vertical</enum> </item>
</property> <item row="5" column="2" colspan="2">
<property name="sizeHint" stdset="0"> <widget class="QCheckBox" name="chkAdminOnlyFP">
<size> <property name="text">
<width>20</width> <string>Only Administrator user accounts can use Pause Forcing Programs command</string>
<height>40</height> </property>
</size> </widget>
</property> </item>
</spacer> <item row="0" column="2">
</item> <widget class="QCheckBox" name="chkWatchConfig">
<item row="1" column="0" colspan="2"> <property name="text">
<widget class="QLabel" name="lblProtection"> <string>Watch Sandboxie.ini for changes</string>
<property name="font"> </property>
<font> </widget>
<weight>75</weight> </item>
<bold>true</bold> <item row="3" column="3" rowspan="2">
<kerning>true</kerning> <widget class="QPushButton" name="btnSetPassword">
</font> <property name="text">
</property> <string>Change Password</string>
<property name="text"> </property>
<string>Config protection</string> </widget>
</property> </item>
</widget> <item row="4" column="1" rowspan="2">
</item> <spacer name="horizontalSpacer_23">
<item row="2" column="1"> <property name="orientation">
<widget class="QCheckBox" name="chkAdminOnly"> <enum>Qt::Horizontal</enum>
<property name="text"> </property>
<string>Only Administrator user accounts can make changes</string> <property name="sizeHint" stdset="0">
</property> <size>
</widget> <width>140</width>
</item> <height>20</height>
<item row="0" column="1"> </size>
<widget class="QCheckBox" name="chkWatchConfig"> </property>
<property name="text"> </spacer>
<string>Watch Sandboxie.ini for changes</string> </item>
</property> <item row="2" column="2">
</widget> <widget class="QCheckBox" name="chkAdminOnly">
</item> <property name="text">
<item row="4" column="1" colspan="2"> <string>Only Administrator user accounts can make changes</string>
<widget class="QCheckBox" name="chkAdminOnlyFP"> </property>
<property name="text"> </widget>
<string>Only Administrator user accounts can use Pause Forcing Programs command</string> </item>
</property> <item row="1" column="0" colspan="2">
</widget> <widget class="QLabel" name="lblProtection">
</item> <property name="font">
<item row="5" column="1"> <font>
<widget class="QCheckBox" name="chkClearPass"> <weight>75</weight>
<property name="text"> <bold>true</bold>
<string>Clear password when main window becomes hidden</string> <kerning>true</kerning>
</property> </font>
</widget> </property>
</item> <property name="text">
</layout> <string>Config protection</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QCheckBox" name="chkPassRequired">
<property name="text">
<string>Password must be entered in order to make changes</string>
</property>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>

View File

@ -2283,7 +2283,6 @@ void CSandMan::OnBoxClosed(const CSandBoxPtr& pBox)
AddAsyncOp(pProgress, true, tr("Executing OnBoxTerminate: %1").arg(Value2)); AddAsyncOp(pProgress, true, tr("Executing OnBoxTerminate: %1").arg(Value2));
} }
} }
if (!pBox->GetBool("NeverDelete", false)) if (!pBox->GetBool("NeverDelete", false))
{ {
if (pBox->GetBool("AutoDelete", false)) if (pBox->GetBool("AutoDelete", false))

View File

@ -537,7 +537,7 @@ void CSandMan::OnSysTray(QSystemTrayIcon::ActivationReason Reason)
} }
} }
void CSandMan::OnBoxMenu(const QPoint & point) void CSandMan::OnBoxMenu(const QPoint& point)
{ {
QTreeWidgetItem* pItem = m_pTrayBoxes->currentItem(); QTreeWidgetItem* pItem = m_pTrayBoxes->currentItem();
if (!pItem) if (!pItem)
@ -545,4 +545,4 @@ void CSandMan::OnBoxMenu(const QPoint & point)
CTrayBoxesItemDelegate::m_Hold = true; CTrayBoxesItemDelegate::m_Hold = true;
m_pBoxView->PopUpMenu(pItem->data(0, Qt::UserRole).toString()); m_pBoxView->PopUpMenu(pItem->data(0, Qt::UserRole).toString());
CTrayBoxesItemDelegate::m_Hold = false; CTrayBoxesItemDelegate::m_Hold = false;
} }

View File

@ -106,6 +106,7 @@ void COptionsWindow::CreateAdvanced()
connect(ui.chkLessConfidential, SIGNAL(clicked(bool)), this, SLOT(OnLessConfidentialChanged())); connect(ui.chkLessConfidential, SIGNAL(clicked(bool)), this, SLOT(OnLessConfidentialChanged()));
connect(ui.chkProtectWindow, SIGNAL(clicked(bool)), this, SLOT(OnProtectChanged())); connect(ui.chkProtectWindow, SIGNAL(clicked(bool)), this, SLOT(OnProtectChanged()));
connect(ui.chkBlockCapture, SIGNAL(clicked(bool)), this, SLOT(OnCaptureChanged())); connect(ui.chkBlockCapture, SIGNAL(clicked(bool)), this, SLOT(OnCaptureChanged()));
//connect(ui.chkLockWhenClose, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
connect(ui.chkNotifyProtect, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged())); connect(ui.chkNotifyProtect, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged()));
connect(ui.treeInjectDll, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(OnToggleInjectDll(QTreeWidgetItem *, int))); connect(ui.treeInjectDll, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(OnToggleInjectDll(QTreeWidgetItem *, int)));
@ -265,8 +266,14 @@ void COptionsWindow::LoadAdvanced()
ui.chkNotifyProtect->setChecked(m_pBox->GetBool("NotifyBoxProtected", false)); ui.chkNotifyProtect->setChecked(m_pBox->GetBool("NotifyBoxProtected", false));
ui.chkProtectWindow->setChecked(m_pBox->GetBool("IsProtectScreen")); ui.chkProtectWindow->setChecked(m_pBox->GetBool("IsProtectScreen"));
ui.chkBlockCapture->setChecked(m_pBox->GetBool("IsBlockCapture")); QString str = m_pBox->GetText("OpenWinClass", "");
ui.chkBlockCapture->setChecked(m_pBox->GetBool("IsBlockCapture")&& QString::compare(str, "*") != 0);
ui.chkBlockCapture->setCheckable(QString::compare(str, "*") != 0);
/*ui.chkLockWhenClose->setChecked(m_pBox->GetBool("LockWhenClose", false));
ui.chkLockWhenClose->setCheckable(m_pBox->GetBool("UseFileImage", false));
ui.chkLockWhenClose->setEnabled(m_pBox->GetBool("UseFileImage", false));
*/
QStringList Users = m_pBox->GetText("Enabled").split(","); QStringList Users = m_pBox->GetText("Enabled").split(",");
ui.lstUsers->clear(); ui.lstUsers->clear();
if (Users.count() > 1) if (Users.count() > 1)
@ -471,6 +478,7 @@ void COptionsWindow::SaveAdvanced()
WriteAdvancedCheck(ui.chkProtectWindow, "IsProtectScreen", "y", "n"); WriteAdvancedCheck(ui.chkProtectWindow, "IsProtectScreen", "y", "n");
WriteAdvancedCheck(ui.chkBlockCapture, "IsBlockCapture", "y", "n"); WriteAdvancedCheck(ui.chkBlockCapture, "IsBlockCapture", "y", "n");
//WriteAdvancedCheck(ui.chkLockWhenClose, "LockWhenClose", "y", "n");
QStringList Users; QStringList Users;
for (int i = 0; i < ui.lstUsers->count(); i++) for (int i = 0; i < ui.lstUsers->count(); i++)
@ -1245,8 +1253,12 @@ void COptionsWindow::OnCaptureChanged()
if (ui.chkBlockCapture->checkState()) { if (ui.chkBlockCapture->checkState()) {
ui.chkProtectWindow->setChecked(FALSE); ui.chkProtectWindow->setChecked(FALSE);
ui.chkProtectWindow->setCheckable(FALSE); ui.chkProtectWindow->setCheckable(FALSE);
} else ui.chkProtectWindow->setEnabled(FALSE);
}
else {
ui.chkProtectWindow->setCheckable(TRUE); ui.chkProtectWindow->setCheckable(TRUE);
ui.chkProtectWindow->setEnabled(TRUE);
}
OnAdvancedChanged(); OnAdvancedChanged();
} }
@ -1255,7 +1267,11 @@ void COptionsWindow::OnProtectChanged()
if (ui.chkProtectWindow->checkState()) { if (ui.chkProtectWindow->checkState()) {
ui.chkBlockCapture->setChecked(FALSE); ui.chkBlockCapture->setChecked(FALSE);
ui.chkBlockCapture->setCheckable(FALSE); ui.chkBlockCapture->setCheckable(FALSE);
} else ui.chkBlockCapture->setEnabled(FALSE);
}
else {
ui.chkBlockCapture->setCheckable(TRUE); ui.chkBlockCapture->setCheckable(TRUE);
ui.chkBlockCapture->setEnabled(TRUE);
}
OnAdvancedChanged(); OnAdvancedChanged();
} }

View File

@ -429,6 +429,7 @@ CSettingsWindow::CSettingsWindow(QWidget* parent)
connect(ui.btnSetPassword, SIGNAL(clicked(bool)), this, SLOT(OnSetPassword())); connect(ui.btnSetPassword, SIGNAL(clicked(bool)), this, SLOT(OnSetPassword()));
connect(ui.chkAdminOnlyFP, SIGNAL(stateChanged(int)), this, SLOT(OnProtectionChange())); connect(ui.chkAdminOnlyFP, SIGNAL(stateChanged(int)), this, SLOT(OnProtectionChange()));
connect(ui.chkClearPass, SIGNAL(stateChanged(int)), this, SLOT(OnProtectionChange())); connect(ui.chkClearPass, SIGNAL(stateChanged(int)), this, SLOT(OnProtectionChange()));
m_ProtectionChanged = false; m_ProtectionChanged = false;
// //
@ -1663,6 +1664,7 @@ 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)