This commit is contained in:
DavidXanatos 2023-04-07 17:22:54 +02:00
parent fec0473e09
commit 7477b76935
9 changed files with 38 additions and 7 deletions

View File

@ -16,10 +16,11 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Added ### Added
- added installer icon - added installer icon
- added token type indicator to process list
### Fixed ### Fixed
- fixed compatybility issue with MSEdge 112.x - fixed compatybility issue with MSEdge 112.x
- fixed updter issue [#2790](https://github.com/sandboxie-plus/Sandboxie/issues/2790)

View File

@ -391,6 +391,11 @@ bool CSbieModel::Sync(const CSandBoxPtr& pBox, const QList<QVariant>& Path, cons
Icon = theGUI->IconAddOverlay(Icon, ":/Actions/SystemShield.png", 20); Icon = theGUI->IconAddOverlay(Icon, ":/Actions/SystemShield.png", 20);
else if(pProcess->HasElevatedToken()) else if(pProcess->HasElevatedToken())
Icon = theGUI->IconAddOverlay(Icon, ":/Actions/AdminShield.png", 20); Icon = theGUI->IconAddOverlay(Icon, ":/Actions/AdminShield.png", 20);
else if(pProcess->HasAppContainerToken())
Icon = theGUI->IconAddOverlay(Icon, ":/Actions/AppContainer.png", 20); // AppContainer is also Restricted
else if(pProcess->HasRestrictedToken())
Icon = theGUI->IconAddOverlay(Icon, ":/Actions/Restricted.png", 20);
pNode->Icon = Icon; pNode->Icon = Icon;
Changed = 1; Changed = 1;

View File

@ -417,7 +417,7 @@ bool COnlineUpdater::AskDownload(const QVariantMap& Data)
mb.setCheckBoxVisible(m_CheckMode != eManual); mb.setCheckBoxVisible(m_CheckMode != eManual);
if (!UpdateUrl.isEmpty() || !DownloadUrl.isEmpty() || Data.contains("files")) { if (!UpdateUrl.isEmpty() || !DownloadUrl.isEmpty() || Data.contains("files")) {
mb.setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No); mb.setStandardButtons(QDialogButtonBox::Yes | QDialogButtonBox::No | QDialogButtonBox::Cancel);
mb.setDefaultButton(QDialogButtonBox::Yes); mb.setDefaultButton(QDialogButtonBox::Yes);
} }
else else
@ -434,8 +434,16 @@ bool COnlineUpdater::AskDownload(const QVariantMap& Data)
else else
QDesktopServices::openUrl(UpdateUrl); QDesktopServices::openUrl(UpdateUrl);
} }
else if (mb.isChecked()) else
{
if (mb.clickedStandardButton() == QDialogButtonBox::Cancel) {
theConf->SetValue("Updater/PendingUpdate", "");
theGUI->UpdateLabel();
}
if (mb.isChecked())
theConf->SetValue("Options/IgnoredUpdates", m_IgnoredUpdates << VersionStr); theConf->SetValue("Options/IgnoredUpdates", m_IgnoredUpdates << VersionStr);
}
return false; return false;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -145,6 +145,8 @@
<file>Actions/Editor2.png</file> <file>Actions/Editor2.png</file>
<file>Actions/Folders.png</file> <file>Actions/Folders.png</file>
<file>IconSun.png</file> <file>IconSun.png</file>
<file>Actions/Restricted.png</file>
<file>Actions/AppContainer.png</file>
</qresource> </qresource>
<qresource prefix="/Boxes"> <qresource prefix="/Boxes">
<file alias="Empty3">Boxes/sandbox-b-empty.png</file> <file alias="Empty3">Boxes/sandbox-b-empty.png</file>

View File

@ -1432,7 +1432,7 @@ void CSandMan::timerEvent(QTimerEvent* pEvent)
bool bUpdatePending = !theConf->GetString("Updater/PendingUpdate").isEmpty(); bool bUpdatePending = !theConf->GetString("Updater/PendingUpdate").isEmpty();
if (m_bIconEmpty != (ActiveProcesses == 0) || m_bIconBusy != bIconBusy || m_iIconDisabled != (bForceProcessDisabled ? 1 : 0) || bUpdatePending) if (m_bIconEmpty != (ActiveProcesses == 0) || m_bIconBusy != bIconBusy || m_iIconDisabled != (bForceProcessDisabled ? 1 : 0) || bUpdatePending || m_bIconSun)
{ {
m_bIconEmpty = (ActiveProcesses == 0); m_bIconEmpty = (ActiveProcesses == 0);
m_bIconBusy = bIconBusy; m_bIconBusy = bIconBusy;

View File

@ -110,7 +110,7 @@ QString CSbieProcess::GetStatusStr() const
if (m_ProcessInfo.IsSystem) if (m_ProcessInfo.IsSystem)
Status += tr(" as System"); Status += tr(" as System");
if(m_SessionId != theAPI->GetSessionID()) if(m_SessionId != theAPI->GetSessionID() && m_SessionId != -1)
Status += tr(" in session %1").arg(m_SessionId); Status += tr(" in session %1").arg(m_SessionId);
quint32 ImageType = GetImageType(); quint32 ImageType = GetImageType();
@ -146,6 +146,17 @@ void CSbieProcess::InitProcessInfoImpl(void* ProcessHandle)
m_ProcessInfo.IsSystem = RtlEqualSid(((PTOKEN_USER)tokenUserBuff)->User.Sid, &SeLocalSystemSid); m_ProcessInfo.IsSystem = RtlEqualSid(((PTOKEN_USER)tokenUserBuff)->User.Sid, &SeLocalSystemSid);
} }
ULONG restricted;
if (NT_SUCCESS(NtQueryInformationToken(TokenHandle, (TOKEN_INFORMATION_CLASS)TokenIsRestricted, &restricted, sizeof(ULONG), &returnLength))) {
m_ProcessInfo.IsRestricted = !!restricted;
}
BYTE appContainerBuffer[0x80];
if (NT_SUCCESS(NtQueryInformationToken(TokenHandle, (TOKEN_INFORMATION_CLASS)TokenAppContainerSid, appContainerBuffer, sizeof(appContainerBuffer), &returnLength))) {
PTOKEN_APPCONTAINER_INFORMATION appContainerInfo = (PTOKEN_APPCONTAINER_INFORMATION)appContainerBuffer;
m_ProcessInfo.IsAppContainer = appContainerInfo->TokenAppContainer != NULL;
}
CloseHandle(TokenHandle); CloseHandle(TokenHandle);
} }
} }

View File

@ -29,6 +29,8 @@ public:
virtual bool HasElevatedToken() { return m_ProcessInfo.IsElevated; } virtual bool HasElevatedToken() { return m_ProcessInfo.IsElevated; }
virtual bool HasSystemToken() { return m_ProcessInfo.IsSystem; } virtual bool HasSystemToken() { return m_ProcessInfo.IsSystem; }
virtual bool HasRestrictedToken() { return m_ProcessInfo.IsRestricted; }
virtual bool HasAppContainerToken() { return m_ProcessInfo.IsAppContainer; }
protected: protected:
@ -45,7 +47,9 @@ protected:
quint32 quint32
IsElevated : 1, IsElevated : 1,
IsSystem : 1, IsSystem : 1,
Spare : 30; IsRestricted : 1,
IsAppContainer : 1,
Spare : 28;
}; };
} m_ProcessInfo; } m_ProcessInfo;
}; };