This commit is contained in:
DavidXanatos 2023-05-15 19:34:15 +02:00
parent 18ea0185d6
commit ca5aaa3856
12 changed files with 197 additions and 99 deletions

View File

@ -5,6 +5,30 @@ This project adheres to [Semantic Versioning](http://semver.org/).
## [1.9.4 / 5.64.4] - 2023-04-??
### Added
- added more documentation links to the plus UI
- added tray menu option to dismiss a pending update notification
### Changed
- improved compatybility template for Data Protection mode (thanks Mr.X)
### Fixed
- fixed Qt6 issues in ARM64 build
- fixed delete V2 bug when using box mounts without a drive letter
- fixed icon overlay issue with high DPI scaling
## [1.9.3 / 5.64.3] - 2023-05-08
### Added

View File

@ -21,8 +21,8 @@
#ifndef _MY_VERSION_H
#define _MY_VERSION_H
#define MY_VERSION_BINARY 5,64,3
#define MY_VERSION_STRING "5.64.3"
#define MY_VERSION_BINARY 5,64,4
#define MY_VERSION_STRING "5.64.4"
#define MY_ABI_VERSION 0x56000
// These #defines are used by either Resource Compiler or NSIS installer

View File

@ -882,6 +882,14 @@ typedef enum _FSINFOCLASS {
FileFsMaximumInformation
} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
typedef struct _FILE_FS_VOLUME_INFORMATION {
LARGE_INTEGER VolumeCreationTime;
ULONG VolumeSerialNumber;
ULONG VolumeLabelLength;
BOOLEAN SupportsObjects;
WCHAR VolumeLabel[1];
} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
__declspec(dllimport) NTSTATUS __stdcall
NtQueryVolumeInformationFile(
IN HANDLE FileHandle,

View File

@ -67,6 +67,10 @@ static LIST File_PathRoot;
static CRITICAL_SECTION *File_PathRoot_CritSec = NULL;
static HANDLE File_BoxRootWatcher = NULL;
static IO_STATUS_BLOCK File_NotifyIosb;
static FILE_NOTIFY_INFORMATION File_NotifyInfo[2];
static ULONG File_BoxRootChangeBits = 0;
static ULONG64 File_PathsFileSize = 0;
static ULONG64 File_PathsFileDate = 0;
@ -86,6 +90,9 @@ static BOOLEAN File_HasDeleted_v2(const WCHAR* TruePath);
static WCHAR* File_GetRelocation(const WCHAR* TruePath);
static NTSTATUS File_SetRelocation(const WCHAR *OldTruePath, const WCHAR *NewTruePath);
BOOL File_InitBoxRootWatcher();
BOOL File_TestBoxRootChange(ULONG WatchBit);
BOOL File_GetAttributes_internal(const WCHAR *name, ULONG64 *size, ULONG64 *date, ULONG *attrs);
HANDLE File_AcquireMutex(const WCHAR* MutexName);
@ -396,11 +403,16 @@ _FX VOID File_SavePathTree_internal(LIST* Root, const WCHAR* name)
wcscpy(PathsFile, Dll_BoxFilePath);
wcscat(PathsFile, L"\\");
wcscat(PathsFile, name);
SbieDll_TranslateNtToDosPath(PathsFile);
UNICODE_STRING objname;
RtlInitUnicodeString(&objname, PathsFile);
OBJECT_ATTRIBUTES objattrs;
InitializeObjectAttributes(&objattrs, &objname, OBJ_CASE_INSENSITIVE, NULL, NULL);
HANDLE hPathsFile;
hPathsFile = CreateFile(PathsFile, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hPathsFile == INVALID_HANDLE_VALUE)
IO_STATUS_BLOCK IoStatusBlock;
if (!NT_SUCCESS(NtCreateFile(&hPathsFile, GENERIC_WRITE, &objattrs, &IoStatusBlock, NULL, 0, FILE_SHARE_READ, FILE_OVERWRITE_IF, FILE_NON_DIRECTORY_FILE, NULL, 0)))
return;
WCHAR* Path = (WCHAR *)Dll_Alloc((0x7FFF + 1)*sizeof(WCHAR)); // max nt path
@ -409,7 +421,7 @@ _FX VOID File_SavePathTree_internal(LIST* Root, const WCHAR* name)
Dll_Free(Path);
CloseHandle(hPathsFile);
NtClose(hPathsFile);
}
@ -476,14 +488,18 @@ _FX BOOLEAN File_LoadPathTree_internal(LIST* Root, const WCHAR* name)
wcscpy(PathsFile, Dll_BoxFilePath);
wcscat(PathsFile, L"\\");
wcscat(PathsFile, name);
SbieDll_TranslateNtToDosPath(PathsFile);
UNICODE_STRING objname;
RtlInitUnicodeString(&objname, PathsFile);
OBJECT_ATTRIBUTES objattrs;
InitializeObjectAttributes(&objattrs, &objname, OBJ_CASE_INSENSITIVE, NULL, NULL);
HANDLE hPathsFile;
hPathsFile = CreateFile(PathsFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hPathsFile == INVALID_HANDLE_VALUE) {
hPathsFile = CreateFile(PathsFile, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hPathsFile != INVALID_HANDLE_VALUE)
CloseHandle(hPathsFile);
IO_STATUS_BLOCK IoStatusBlock;
if (!NT_SUCCESS(NtCreateFile(&hPathsFile, GENERIC_READ, &objattrs, &IoStatusBlock, NULL, 0, FILE_SHARE_READ, FILE_OPEN, FILE_NON_DIRECTORY_FILE, NULL, 0))) {
if (NT_SUCCESS(NtCreateFile(&hPathsFile, GENERIC_WRITE, &objattrs, &IoStatusBlock, NULL, 0, FILE_SHARE_READ, FILE_CREATE, FILE_NON_DIRECTORY_FILE, NULL, 0)))
NtClose(hPathsFile);
return FALSE;
}
@ -530,7 +546,7 @@ _FX BOOLEAN File_LoadPathTree_internal(LIST* Root, const WCHAR* name)
Dll_Free(Buffer);
CloseHandle(hPathsFile);
NtClose(hPathsFile);
return TRUE;
}
@ -564,10 +580,7 @@ _FX BOOLEAN File_LoadPathTree()
_FX VOID File_RefreshPathTree()
{
if (!File_BoxRootWatcher)
return;
if (WaitForSingleObject(File_BoxRootWatcher, 0) == WAIT_OBJECT_0) {
if (File_TestBoxRootChange(0)) {
ULONG64 PathsFileSize = 0;
ULONG64 PathsFileDate = 0;
@ -582,8 +595,6 @@ _FX VOID File_RefreshPathTree()
//
File_LoadPathTree();
FindNextChangeNotification(File_BoxRootWatcher); // rearm the watcher
}
}
}
@ -609,18 +620,77 @@ _FX BOOLEAN File_InitDelete_v2()
File_GetAttributes_internal(FILE_PATH_FILE_NAME, &File_PathsFileSize, &File_PathsFileDate, NULL);
WCHAR BoxFilePath[MAX_PATH] = { 0 };
wcscpy(BoxFilePath, Dll_BoxFilePath);
SbieDll_TranslateNtToDosPath(BoxFilePath);
File_BoxRootWatcher = FindFirstChangeNotification(BoxFilePath, FALSE, FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE);
FindNextChangeNotification(File_BoxRootWatcher); // arm the watcher
File_InitBoxRootWatcher();
return TRUE;
}
//---------------------------------------------------------------------------
// File_InitBoxRootWatcher
//---------------------------------------------------------------------------
_FX BOOL File_InitBoxRootWatcher()
{
if (File_BoxRootWatcher)
return TRUE; // already initialized
UNICODE_STRING objname;
RtlInitUnicodeString(&objname, Dll_BoxFilePath);
OBJECT_ATTRIBUTES objattrs;
InitializeObjectAttributes(&objattrs, &objname, OBJ_CASE_INSENSITIVE, NULL, NULL);
HANDLE FileHandle;
IO_STATUS_BLOCK IoStatusBlock;
if (NT_SUCCESS(NtOpenFile(&FileHandle, FILE_READ_DATA | SYNCHRONIZE, &objattrs, &IoStatusBlock, FILE_SHARE_VALID_FLAGS, FILE_DIRECTORY_FILE | FILE_OPEN_FOR_BACKUP_INTENT))) {
// IoStatusBlock MUST be static/global because NtNotifyChangeDirectoryFile works asynchronously.
// It may write into io after the function has left, which may result in all sorts of memory corruption.
if (NT_SUCCESS(NtNotifyChangeDirectoryFile(FileHandle, NULL, NULL, NULL, &File_NotifyIosb, File_NotifyInfo, sizeof(File_NotifyInfo), FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE, FALSE))) {
File_BoxRootWatcher = FileHandle;
//FindNextChangeNotification(File_BoxRootWatcher); // arm the watcher
NtNotifyChangeDirectoryFile(File_BoxRootWatcher, NULL, NULL, NULL, &File_NotifyIosb, File_NotifyInfo, sizeof(File_NotifyInfo), 3u, 1u);
return TRUE;
}
else
NtClose(FileHandle);
}
return FALSE;
}
//---------------------------------------------------------------------------
// File_TestBoxRootChange
//---------------------------------------------------------------------------
_FX BOOL File_TestBoxRootChange(ULONG WatchBit)
{
if (!File_BoxRootWatcher)
return FALSE; // not initialized
LARGE_INTEGER Timeout = { 0 };
if(NtWaitForSingleObject(File_BoxRootWatcher, 0, &Timeout) == WAIT_OBJECT_0) {
//if (WaitForSingleObject(File_BoxRootWatcher, 0) == WAIT_OBJECT_0) {
File_BoxRootChangeBits = -1; // set all bits
//FindNextChangeNotification(File_BoxRootWatcher); // rearm the watcher
NtNotifyChangeDirectoryFile(File_BoxRootWatcher, NULL, NULL, NULL, &File_NotifyIosb, File_NotifyInfo, sizeof(File_NotifyInfo), 3u, 1u);
}
ULONG WatchMask = 1 << WatchBit;
BOOL bRet = (File_BoxRootChangeBits & WatchMask) != 0; // check requested bit
File_BoxRootChangeBits &= ~WatchMask; // clear requested bit
return bRet;
}
//---------------------------------------------------------------------------
// File_MarkDeleted_internal
//---------------------------------------------------------------------------

View File

@ -328,13 +328,6 @@ _FX BOOLEAN File_IsBlockedNetParam(const WCHAR *BoxName)
// File_GetVolumeSN
//---------------------------------------------------------------------------
typedef struct _FILE_FS_VOLUME_INFORMATION {
LARGE_INTEGER VolumeCreationTime;
ULONG VolumeSerialNumber;
ULONG VolumeLabelLength;
BOOLEAN SupportsObjects;
WCHAR VolumeLabel[1];
} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
_FX ULONG File_GetVolumeSN(const FILE_DRIVE *drive)
{

View File

@ -57,7 +57,6 @@ static CRITICAL_SECTION *Key_PathRoot_CritSec = NULL;
BOOLEAN Key_RegPaths_Loaded = FALSE;
static HANDLE Key_BoxRootWatcher = NULL;
static ULONG64 Key_PathsFileSize = 0;
static ULONG64 Key_PathsFileDate = 0;
static volatile ULONGLONG Key_PathsVersion = 0; // count reloads
@ -89,6 +88,9 @@ VOID File_SavePathNode_internal(HANDLE hPathsFile, LIST* parent, WCHAR* Path, UL
BOOLEAN File_MarkDeleted_internal(LIST* Root, const WCHAR* Path);
VOID File_SetRelocation_internal(LIST* Root, const WCHAR* OldTruePath, const WCHAR* NewTruePath);
BOOL File_InitBoxRootWatcher();
BOOL File_TestBoxRootChange(ULONG WatchBit);
BOOL File_GetAttributes_internal(const WCHAR *name, ULONG64 *size, ULONG64 *date, ULONG *attrs);
HANDLE File_AcquireMutex(const WCHAR* MutexName);
@ -168,14 +170,11 @@ _FX BOOLEAN Key_LoadPathTree()
_FX VOID Key_RefreshPathTree()
{
if (!Key_BoxRootWatcher)
return;
if (WaitForSingleObject(Key_BoxRootWatcher, 0) == WAIT_OBJECT_0) {
if (File_TestBoxRootChange(1)) {
ULONG64 PathsFileSize = 0;
ULONG64 PathsFileDate = 0;
if (File_GetAttributes_internal(KEY_PATH_FILE_NAME, &PathsFileSize, &PathsFileDate, NULL)
if (File_GetAttributes_internal(KEY_PATH_FILE_NAME, &PathsFileSize, &PathsFileDate, NULL)
&& (Key_PathsFileSize != PathsFileSize || Key_PathsFileDate != PathsFileDate)) {
Key_PathsFileSize = PathsFileSize;
@ -186,8 +185,6 @@ _FX VOID Key_RefreshPathTree()
//
Key_LoadPathTree();
FindNextChangeNotification(Key_BoxRootWatcher); // rearm the watcher
}
}
}
@ -213,13 +210,7 @@ _FX BOOLEAN Key_InitDelete_v2()
File_GetAttributes_internal(KEY_PATH_FILE_NAME, &Key_PathsFileSize, &Key_PathsFileDate, NULL);
WCHAR BoxFilePath[MAX_PATH] = { 0 };
wcscpy(BoxFilePath, Dll_BoxFilePath);
SbieDll_TranslateNtToDosPath(BoxFilePath);
Key_BoxRootWatcher = FindFirstChangeNotification(BoxFilePath, FALSE, FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE);
FindNextChangeNotification(Key_BoxRootWatcher); // arm the watcher
File_InitBoxRootWatcher();
return TRUE;
}

View File

@ -435,6 +435,7 @@ NormalKeyPath=HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explor
NormalKeyPath=HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts
NormalKeyPath=HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\FileAssociations
NormalKeyPath=HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Shell\Associations
NormalKeyPath=HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations*
#
# Access rules for app compartment boxes
@ -3730,6 +3731,11 @@ Tmpl.Class=Misc
#BlockPort=137,138,139,445
NetworkAccess=*,Block;Port=137,138,139,445
[Template_BlockDNS]
Tmpl.Title=BLock DNS
Tmpl.Class=Misc
NetworkAccess=*,Block;Port=53;Protocol=UDP
[Template_BlockTelemetry]
Tmpl.Title=#4307
Tmpl.Class=Misc

View File

@ -1233,7 +1233,7 @@ QIcon CSandMan::IconAddOverlay(const QIcon& Icon, const QString& Name, int Size)
{
QPixmap overlay = QPixmap(Name).scaled(Size, Size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
QPixmap base = Icon.pixmap(32, 32);
QPixmap base = Icon.pixmap(32, 32).scaled(32, 32, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
QPixmap result(base.width(), base.height());
result.fill(Qt::transparent); // force alpha channel
QPainter painter(&result);
@ -1250,7 +1250,7 @@ QString CSandMan::GetBoxDescription(int boxType)
switch (boxType) {
case CSandBoxPlus::eHardenedPlus:
case CSandBoxPlus::eHardened:
Info = tr("This box provides enhanced security isolation, it is suitable to test untrusted software.");
Info = tr("This box provides <a href=\"sbie://docs/security-mode\">enhanced security isolation</a>, it is suitable to test untrusted software.");
break;
case CSandBoxPlus::eDefaultPlus:
case CSandBoxPlus::eDefault:
@ -1258,12 +1258,12 @@ QString CSandMan::GetBoxDescription(int boxType)
break;
case CSandBoxPlus::eAppBoxPlus:
case CSandBoxPlus::eAppBox:
Info = tr("This box does not enforce isolation, it is intended to be used as an application compartment for software virtualization only.");
Info = tr("This box does not enforce isolation, it is intended to be used as an <a href=\"sbie://docs/compartment-mode\">application compartment</a> for software virtualization only.");
break;
}
if(boxType == CSandBoxPlus::eHardenedPlus || boxType == CSandBoxPlus::eDefaultPlus || boxType == CSandBoxPlus::eAppBoxPlus)
Info.append(tr("\n\nThis box prevents access to all user data locations, except explicitly granted in the Resource Access options."));
Info.append(tr("\n\nThis box <a href=\"sbie://docs/privacy-mode\">prevents access to all user data</a> locations, except explicitly granted in the Resource Access options."));
return Info;
}
@ -1430,6 +1430,16 @@ void CSandMan::timerEvent(QTimerEvent* pEvent)
}
bool bUpdatePending = !theConf->GetString("Updater/PendingUpdate").isEmpty();
if (bUpdatePending) {
if (m_pDismissUpdate->isChecked())
bUpdatePending = false;
else if (!m_pDismissUpdate->isVisible())
m_pDismissUpdate->setVisible(true);
}
else if (m_pDismissUpdate->isChecked())
m_pDismissUpdate->setChecked(false);
if(!bUpdatePending && m_pDismissUpdate->isVisible())
m_pDismissUpdate->setVisible(false);
if (m_bIconEmpty != (ActiveProcesses == 0) || m_bIconBusy != bIconBusy || m_iIconDisabled != (bForceProcessDisabled ? 1 : 0) || bUpdatePending || m_bIconSun)
{
@ -3286,7 +3296,7 @@ void CSandMan::OnHelp()
// QDesktopServices::openUrl(QUrl("https://sandboxie-plus.com/go.php?to=donate"));
//else
if (sender() == m_pContribution)
QDesktopServices::openUrl(QUrl("https://sandboxie-plus.com/go.php?to=sbie-contribution"));
QDesktopServices::openUrl(QUrl("https://sandboxie-plus.com/go.php?to=sbie-contribute"));
else if (sender() == m_pManual)
QDesktopServices::openUrl(QUrl("https://sandboxie-plus.com/go.php?to=sbie-docs"));
else if (sender() == m_pForum)

View File

@ -534,15 +534,10 @@ void CSandMan::OnSysTray(QSystemTrayIcon::ActivationReason Reason)
void CSandMan::OnBoxMenu(const QPoint & point)
{
QPoint pos = ((QWidget*)m_pTrayBoxes->parent())->mapFromParent(point);
QTreeWidgetItem* pItem = m_pTrayBoxes->itemAt(pos);
QTreeWidgetItem* pItem = m_pTrayBoxes->currentItem();
if (!pItem)
return;
m_pTrayBoxes->setCurrentItem(pItem);
CTrayBoxesItemDelegate::m_Hold = true;
m_pBoxView->PopUpMenu(pItem->data(0, Qt::UserRole).toString());
CTrayBoxesItemDelegate::m_Hold = false;
//m_pBoxMenu->popup(QCursor::pos());
}
}

View File

@ -321,7 +321,7 @@ CUIPage::CUIPage(QWidget* parent)
buttonGroup1->addButton(m_pAdvanced, 0);
buttonGroup1->addButton(m_pSimple, 1);
buttonGroup1->addButton(m_pClassic, 2);
connect(buttonGroup1, SIGNAL(buttonClicked(int)), this, SLOT(UpdatePreview()));
connect(buttonGroup1, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(UpdatePreview()));
QLabel* pDummy = new QLabel();
pDummy->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
@ -348,7 +348,7 @@ CUIPage::CUIPage(QWidget* parent)
QButtonGroup *buttonGroup2 = new QButtonGroup();
buttonGroup2->addButton(m_pBrightMode, 0);
buttonGroup2->addButton(m_pDarkMode, 1);
connect(buttonGroup2, SIGNAL(buttonClicked(int)), this, SLOT(UpdatePreview()));
connect(buttonGroup2, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(UpdatePreview()));

View File

@ -69,18 +69,18 @@
<message>
<location filename="Wizards/NewBoxWizard.cpp" line="474"/>
<source>Use a Sandboxie login instead of an anonymous token</source>
<translation type="unfinished"></translation>
<translation>Utiliser un identifiant de Sandboxie au lieu d&apos;un jeton anonyme</translation>
</message>
<message>
<location filename="Wizards/NewBoxWizard.cpp" line="480"/>
<source>Prevent sandboxes programs installed on host from loading dll&apos;s from the sandbox</source>
<translation type="unfinished">Empêcher les programmes dans un bac à sable installé sur l&apos;hôte de charger des DLL depuis le bac à sable</translation>
<translation>Empêcher les programmes dans un bac à sable installé sur l&apos;hôte de charger des DLL depuis le bac à sable</translation>
</message>
<message>
<location filename="Wizards/NewBoxWizard.cpp" line="481"/>
<source>This feature may reduce compatibility as it also prevents box located processes from writing to host located ones and even starting them.</source>
<oldsource>This feature may reduce compatybility as it also prevents box located processes from writing to host located once and even starting them.</oldsource>
<translation type="unfinished"></translation>
<translation>Cette fonction peut réduire la compatibilité car elle empêche également les processus situés dans les bacs d&apos;écrire à ceux situés sur l&apos;hôte et même de les démarrer.</translation>
</message>
<message>
<source>Use a Sandboxie login instead of an anonymous token (experimental)</source>
@ -381,7 +381,7 @@ Veuillez naviguer vers la répertoire correct des profils d&apos;utilisateurs.</
<message>
<location filename="Wizards/SetupWizard.cpp" line="258"/>
<source>&lt;b&gt;Sandboxie-Plus&lt;/b&gt; provides additional features and box types exclusively to &lt;u&gt;project supporters&lt;/u&gt;. Boxes like the Privacy Enhanced boxes &lt;b&gt;&lt;font color=&apos;red&apos;&gt;protect user data from illicit access&lt;/font&gt;&lt;/b&gt; by the sandboxed programs. If you are not yet a supporter, then please consider &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;supporting the project&lt;/a&gt; to ensure further development of Sandboxie and to receive a &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;supporter certificate&lt;/a&gt;.</source>
<translation>&lt;b&gt;Sandboxie-Plus&lt;/b&gt; fournit des fonctionnalités supplémentaires et des types de bacs exclusifs aux &lt;u&gt;adhérents du projet&lt;/u&gt;. Les bacs tels que ceux à Confidentialité Améliorée &lt;b&gt;&lt;font color=&apos;red&apos;&gt;protègent les données de l&apos;utilisateur contre les accès illicites&lt;/font&gt;&lt;/b&gt; par les programmes en bac à sable. Si vous n&apos;êtes pas encore un adhérent, alors veuillez songer à &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;soutenir le projet&lt;/a&gt; pour assurer le développement futur de Sandboxie et recevoir un &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt;.</translation>
<translation>&lt;b&gt;Sandboxie-Plus&lt;/b&gt; fournit des fonctions supplémentaires et des types de bacs exclusifs aux &lt;u&gt;adhérents du projet&lt;/u&gt;. Les bacs tels que ceux à Confidentialité Améliorée &lt;b&gt;&lt;font color=&apos;red&apos;&gt;protègent les données de l&apos;utilisateur contre les accès illicites&lt;/font&gt;&lt;/b&gt; par les programmes en bac à sable. Si vous n&apos;êtes pas encore un adhérent, alors veuillez songer à &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;soutenir le projet&lt;/a&gt; pour assurer le développement futur de Sandboxie et recevoir un &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt;.</translation>
</message>
</context>
<context>
@ -1982,22 +1982,22 @@ Chemin complet : %4</translation>
<context>
<name>CRecoveryLogWnd</name>
<message>
<location filename="SandManRecovery.cpp" line="306"/>
<location filename="SandManRecovery.cpp" line="301"/>
<source>Sandboxie-Plus - Recovery Log</source>
<translation>Sandboxie-Plus - Journal de récupération</translation>
</message>
<message>
<location filename="SandManRecovery.cpp" line="317"/>
<location filename="SandManRecovery.cpp" line="312"/>
<source>Time|Box Name|File Path</source>
<translation>Heure|Nom du bac|Chemin du fichier</translation>
</message>
<message>
<location filename="SandManRecovery.cpp" line="319"/>
<location filename="SandManRecovery.cpp" line="314"/>
<source>Cleanup Recovery Log</source>
<translation>Purger le journal de récupération</translation>
</message>
<message>
<location filename="SandManRecovery.cpp" line="329"/>
<location filename="SandManRecovery.cpp" line="324"/>
<source>The following files were recently recovered and moved out of a sandbox.</source>
<oldsource>the following files were recently recovered and moved out of a sandbox.</oldsource>
<translation>Les fichiers suivants ont récemment é récupérés et sortis d&apos;un bac à sable.</translation>
@ -3070,12 +3070,12 @@ No will choose: %2</source>
<message>
<location filename="SandMan.cpp" line="2078"/>
<source>The program %1 started in box %2 will be terminated in 5 minutes because the box was configured to use features exclusively available to project supporters.</source>
<translation>Le programme %1 lancé dans le bac %2 sera arrêté dans 5 minutes car le bac a é configurée pour utiliser des fonctionnalités uniquement disponibles aux adhérents du projet.</translation>
<translation>Le programme %1 lancé dans le bac %2 sera arrêté dans 5 minutes car le bac a é configuré pour utiliser des fonctions uniquement disponibles aux adhérents du projet.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="2080"/>
<source>The box %1 is configured to use features exclusively available to project supporters, these presets will be ignored.</source>
<translation>Le bac %1 est configuré pour utiliser des fonctionnalités uniquement disponibles aux adhérents du projet, ces réglages seront donc ignorés.</translation>
<translation>Le bac %1 est configuré pour utiliser des fonctions uniquement disponibles aux adhérents du projet ; ces réglages seront donc ignorés.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="2081"/>
@ -3084,7 +3084,7 @@ No will choose: %2</source>
</message>
<message>
<source>The program %1 started in box %2 will be terminated in 5 minutes because the box was configured to use features exclusively available to project supporters.&lt;br /&gt;&lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;Become a project supporter&lt;/a&gt;, and receive a &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;supporter certificate&lt;/a&gt;</source>
<translation type="vanished">Le programme %1 lancé dans le bac à sable %2 sera terminé dans 5 minutes car le bac a é configuré pour utiliser des fonctionnalités exclusivement disponibles aux adhérents du projet.&lt;br /&gt;&lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;Devenez un adhérent au projet&lt;/a&gt;, et recevez un &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt;</translation>
<translation type="vanished">Le programme %1 lancé dans le bac à sable %2 sera terminé dans 5 minutes car le bac a é configuré pour utiliser des fonctions exclusivement disponibles aux adhérents du projet.&lt;br /&gt;&lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;Devenez un adhérent au projet&lt;/a&gt;, et recevez un &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt;</translation>
</message>
<message>
<location filename="SandMan.cpp" line="2109"/>
@ -3099,27 +3099,27 @@ No will choose: %2</source>
<message>
<location filename="SandMan.cpp" line="2140"/>
<source>The selected feature set is only available to project supporters. Processes started in a box with this feature set enabled without a supporter certificate will be terminated after 5 minutes.&lt;br /&gt;&lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;Become a project supporter&lt;/a&gt;, and receive a &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;supporter certificate&lt;/a&gt;</source>
<translation>La fonctionnalité sélectionnée n&apos;est disponible qu&apos;aux adhérents au projet. Les processus lancés dans un bac à sable avec cette fonctionnalité activée sans certificat d&apos;adhérent seront arrêtés après 5 minutes.&lt;br /&gt;&lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;Devenez un adhérent du projet&lt;/a&gt;, et recevez un &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt;.</translation>
<translation>La fonction sélectionnée n&apos;est disponible qu&apos;aux adhérents au projet. Les processus lancés dans un bac à sable avec cette fonction activée sans certificat d&apos;adhérent seront arrêtés après 5 minutes.&lt;br /&gt;&lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;Devenez un adhérent du projet&lt;/a&gt;, et recevez un &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt;.</translation>
</message>
<message>
<location filename="SandManRecovery.cpp" line="202"/>
<location filename="SandManRecovery.cpp" line="198"/>
<source>Recovering file %1 to %2</source>
<translation>Récupération du fichier %1 vers %2</translation>
</message>
<message>
<location filename="SandManRecovery.cpp" line="214"/>
<location filename="SandManRecovery.cpp" line="210"/>
<source>The file %1 already exists, do you want to overwrite it?</source>
<translation>Le fichier %1 existe déjà, voulez-vous l&apos;écraser ?</translation>
</message>
<message>
<location filename="SandManRecovery.cpp" line="179"/>
<location filename="SandManRecovery.cpp" line="215"/>
<location filename="SandManRecovery.cpp" line="176"/>
<location filename="SandManRecovery.cpp" line="211"/>
<source>Do this for all files!</source>
<translation>Faire ceci pour tous les fichiers !</translation>
</message>
<message>
<location filename="SandManRecovery.cpp" line="99"/>
<location filename="SandManRecovery.cpp" line="159"/>
<location filename="SandManRecovery.cpp" line="156"/>
<source>Checking file %1</source>
<translation>Vérification du fichier %1</translation>
</message>
@ -3141,7 +3141,7 @@ No will choose: %2</source>
<translation>Tous les fichiers ont passé les vérifications</translation>
</message>
<message>
<location filename="SandManRecovery.cpp" line="178"/>
<location filename="SandManRecovery.cpp" line="175"/>
<source>The file %1 failed a security check, do you want to recover it anyway?
%2</source>
@ -3153,7 +3153,7 @@ No will choose: %2</source>
%2</translation>
</message>
<message>
<location filename="SandManRecovery.cpp" line="243"/>
<location filename="SandManRecovery.cpp" line="238"/>
<source>Failed to recover some files:
</source>
<translation>Échec de la récupération de certains fichiers :
@ -3216,7 +3216,7 @@ No will choose: %2</source>
<message>
<location filename="SandMan.cpp" line="2680"/>
<source>In the Plus UI, this functionality has been integrated into the main sandbox list view.</source>
<translation>Dans l&apos;interface utilisateur de la version Plus, cette fonctionnalité a é intégrée à l&apos;affichage principal de la liste des bacs à sable.</translation>
<translation>Dans l&apos;interface utilisateur de la version Plus, cette fonction a é intégrée à l&apos;affichage principal de la liste des bacs à sable.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="2681"/>
@ -3309,7 +3309,7 @@ Remarque : La recherche de mise à jour est souvent en retard par rapport à la
<message>
<location filename="SandMan.cpp" line="3315"/>
<source>Sandboxie-Plus is an open source continuation of Sandboxie.&lt;br /&gt;Visit &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; for more information.&lt;br /&gt;&lt;br /&gt;%3&lt;br /&gt;&lt;br /&gt;Driver version: %1&lt;br /&gt;Features: %2&lt;br /&gt;&lt;br /&gt;Icons from &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;</source>
<translation>Sandboxie-Plus est la poursuite en code source ouvert de Sandboxie.&lt;br /&gt;Visitez &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; pour plus d&apos;informations.&lt;br /&gt;&lt;br /&gt;%3&lt;br /&gt;&lt;br /&gt;Version du pilote : %1&lt;br /&gt;Fonctionnalités : %2&lt;br /&gt;&lt;br /&gt;Icônes provenant de &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;</translation>
<translation>Sandboxie-Plus est la poursuite en code source ouvert de Sandboxie.&lt;br /&gt;Visitez &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; pour plus d&apos;informations.&lt;br /&gt;&lt;br /&gt;%3&lt;br /&gt;&lt;br /&gt;Version du pilote : %1&lt;br /&gt;Fonctions : %2&lt;br /&gt;&lt;br /&gt;Icônes provenant de &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;</translation>
</message>
<message>
<source>Error Status: %1</source>
@ -3882,7 +3882,7 @@ Remarque : La recherche de mise à jour est souvent en retard par rapport à la
<message>
<location filename="Views/SbieView.cpp" line="175"/>
<source>Programs and Features</source>
<translation>Programmes et fonctionnalités</translation>
<translation>Programmes et fonctions</translation>
</message>
<message>
<source>Terminal</source>
@ -3988,7 +3988,7 @@ Remarque : La recherche de mise à jour est souvent en retard par rapport à la
<message>
<location filename="Views/SbieView.cpp" line="225"/>
<source>Disable Force Rules</source>
<translation type="unfinished"></translation>
<translation>Désactiver les règles de forçage</translation>
</message>
<message>
<location filename="Views/SbieView.cpp" line="228"/>
@ -4666,17 +4666,17 @@ Remarque : La recherche de mise à jour est souvent en retard par rapport à la
<message>
<location filename="Windows/SettingsWindow.cpp" line="967"/>
<source>&lt;br /&gt;&lt;font color=&apos;red&apos;&gt;Plus features will be disabled in %1 days.&lt;/font&gt;</source>
<translation>&lt;br /&gt;&lt;font color=&apos;red&apos;&gt;Les fonctionnalités « Plus » seront désactivées dans %1 jour(s).&lt;/font&gt;</translation>
<translation>&lt;br /&gt;&lt;font color=&apos;red&apos;&gt;Les fonctions « Plus » seront désactivées dans %1 jour(s).&lt;/font&gt;</translation>
</message>
<message>
<location filename="Windows/SettingsWindow.cpp" line="969"/>
<source>&lt;br /&gt;&lt;font color=&apos;red&apos;&gt;For this build Plus features remain enabled.&lt;/font&gt;</source>
<translation>&lt;br /&gt;&lt;font color=&apos;red&apos;&gt;Pour cette version, les fonctionnalités « Plus » demeurent activées.&lt;/font&gt;</translation>
<translation>&lt;br /&gt;&lt;font color=&apos;red&apos;&gt;Pour cette version, les fonctions « Plus » demeurent activées.&lt;/font&gt;</translation>
</message>
<message>
<location filename="Windows/SettingsWindow.cpp" line="971"/>
<source>&lt;br /&gt;Plus features are no longer enabled.</source>
<translation>&lt;br /&gt;Les fonctionnalités « Plus » ne sont plus activées.</translation>
<translation>&lt;br /&gt;Les fonctions « Plus » ne sont plus activées.</translation>
</message>
<message>
<location filename="Windows/SettingsWindow.cpp" line="1006"/>
@ -4951,7 +4951,8 @@ Les processus de ce bac penseront qu&apos;ils sont lancés avec des privilèges
Processes in this box will be running with a custom process token indicating the sandbox they belong to.</source>
<oldsource>
Processes in this box will be running with a custom process token indicating the sandbox thay belong to.</oldsource>
<translation type="unfinished"></translation>
<translation>
Les processus dans ce bac seront lancés avec un jeton de processus personnalisé indiquant à quel bac à sable ils appartiennent.</translation>
</message>
<message>
<location filename="Wizards/NewBoxWizard.cpp" line="618"/>
@ -5000,17 +5001,17 @@ Processes in this box will be running with a custom process token indicating the
<message>
<location filename="Windows/SupportDialog.cpp" line="135"/>
<source>Personal use of Sandboxie is free of charge on x86/x64, although some functionality is only available to project supporters.&lt;br /&gt;&lt;br /&gt;</source>
<translation>L&apos;utilisation personnelle de Sandboxie est gratuite sur les systèmes x86/x64, bien que certaines fonctionnalités ne soient disponibles qu&apos;aux adhérents du projet.&lt;br /&gt;&lt;br /&gt;</translation>
<translation>L&apos;utilisation personnelle de Sandboxie est gratuite sur les systèmes x86/x64, bien que certaines fonctions ne soient disponibles qu&apos;aux adhérents du projet.&lt;br /&gt;&lt;br /&gt;</translation>
</message>
<message>
<location filename="Windows/SupportDialog.cpp" line="138"/>
<source>Please continue &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;supporting the project&lt;/a&gt; by renewing your &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;supporter certificate&lt;/a&gt; and continue using the &lt;b&gt;enhanced functionality&lt;/b&gt; in new builds.</source>
<translation>Veuillez continuer à &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;soutenir le projet&lt;/a&gt; en renouvelant votre &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt; afin de continuer à utiliser les &lt;b&gt;fonctionnalités avancées&lt;/b&gt; dans les nouvelles versions.</translation>
<translation>Veuillez continuer à &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;soutenir le projet&lt;/a&gt; en renouvelant votre &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt; afin de continuer à utiliser les &lt;b&gt;fonctions avancées&lt;/b&gt; dans les nouvelles versions.</translation>
</message>
<message>
<location filename="Windows/SupportDialog.cpp" line="141"/>
<source>Sandboxie &lt;u&gt;without&lt;/u&gt; a valid supporter certificate will sometimes &lt;b&gt;&lt;font color=&apos;red&apos;&gt;pause for a few seconds&lt;/font&gt;&lt;/b&gt;, to give you time to contemplate the option of &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;supporting the project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;supporter certificate&lt;/a&gt; not just removes this reminder, but also enables &lt;b&gt;exclusive enhanced functionality&lt;/b&gt; providing better security and compatibility.</source>
<translation>Sandboxie &lt;u&gt;sans&lt;/u&gt; un certificat d&apos;adhérent valide se mettra parfois &lt;b&gt;&lt;font color=&apos;red&apos;&gt;en pause pendant quelques secondes&lt;/font&gt;&lt;/b&gt;, afin de vous donner du temps pour considérer l&apos;option de &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;soutenir le projet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Un &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt; n&apos;enlève pas seulement ce rappel, mais active également &lt;b&gt;des fonctionnalités avancées exclusives&lt;/b&gt; fournissant une sécurité et une compatibilité améliorées.</translation>
<translation>Sandboxie &lt;u&gt;sans&lt;/u&gt; un certificat d&apos;adhérent valide se mettra parfois &lt;b&gt;&lt;font color=&apos;red&apos;&gt;en pause pendant quelques secondes&lt;/font&gt;&lt;/b&gt;, afin de vous donner du temps pour considérer l&apos;option de &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-get-cert&quot;&gt;soutenir le projet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Un &lt;a href=&quot;https://sandboxie-plus.com/go.php?to=sbie-cert&quot;&gt;certificat d&apos;adhérent&lt;/a&gt; n&apos;enlève pas seulement ce rappel, mais active également &lt;b&gt;des fonctions avancées exclusives&lt;/b&gt; fournissant une sécurité et une compatibilité améliorées.</translation>
</message>
<message>
<location filename="Windows/SupportDialog.cpp" line="172"/>
@ -5926,7 +5927,7 @@ Processes in this box will be running with a custom process token indicating the
<location filename="Forms/OptionsWindow.ui" line="1903"/>
<source>Programs entered here will be allowed to break out of this sandbox when they start. It is also possible to capture them into another sandbox, for example to have your web browser always open in a dedicated box.</source>
<oldsource>Programs entered here will be allowed to break out of this box when thay start, you can capture them into an other box. For example to have your web browser always open in a dedicated box. This feature requires a valid supporter certificate to be installed.</oldsource>
<translation>Les programmes saisis ici seront autorisés à s&apos;évader de ce bac lors de leur démarrage, de sorte que vous puissiez les capturer dans un autre bac, par exemple pour que votre navigateur web s&apos;ouvre toujours dans un bac dédié. Cette fonctionnalité nécessite qu&apos;un certificat d&apos;adhérent valide soit installé.</translation>
<translation>Les programmes saisis ici seront autorisés à s&apos;évader de ce bac lors de leur démarrage, de sorte que vous puissiez les capturer dans un autre bac, par exemple pour que votre navigateur web s&apos;ouvre toujours dans un bac dédié. Cette fonction nécessite qu&apos;un certificat d&apos;adhérent valide soit installé.</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1920"/>
@ -6498,7 +6499,7 @@ Le niveau de correspondance du processus a une priorité plus élevée que la sp
</message>
<message>
<source>Various advanced isolation features can break compatibility with some applications. If you are using this sandbox &lt;b&gt;NOT for Security&lt;/b&gt; but for simple application portability, by changing these options you can restore compatibility by sacrificing some security.</source>
<translation type="vanished">De multiples fonctionnalités avancées d&apos;isolation peuvent casser la compatibilité avec certaines applications. Si vous utilisez ce bac à sable &lt;b&gt;NON par sécurité&lt;/b&gt;, mais uniquement pour de la portabilité d&apos;application, changer ces options permettra de restaurer la compatibilité en sacrifiant un peu de sécurité.</translation>
<translation type="vanished">De multiples fonctions avancées d&apos;isolation peuvent casser la compatibilité avec certaines applications. Si vous utilisez ce bac à sable &lt;b&gt;NON par sécurité&lt;/b&gt;, mais uniquement pour de la portabilité d&apos;application, changer ces options permettra de restaurer la compatibilité en sacrifiant un peu de sécurité.</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1204"/>
@ -6536,7 +6537,7 @@ Le niveau de correspondance du processus a une priorité plus élevée que la sp
</message>
<message>
<source>Various advanced isolation features can break compatibility, with some applications, if you are using this sandbox &lt;b&gt;NOT for Security&lt;/b&gt; but for simple application portability by changing these options you can restore compatibility by sacrificing some security.&lt;br&gt;These options can be used securely when you don&apos;t grant any of the sandboxed process admin rights.</source>
<translation type="vanished">Diverses fonctionnalités d&apos;isolation avancées peuvent rompre la compatibilité, avec certaines applications, si vous utilisez ce bac à sable &lt;b&gt;PAS pour la sécurité&lt;/b&gt; mais pour la simple portabilité des applications en modifiant ces options, vous pouvez rétablir la compatibilité en sacrifiant une certaine sécurité.&lt;br&gt;Ces options peuvent être utilisées en toute sécurité lorsque vous n&apos;accordez à aucun des processus mis en bac à sable des droits administrateur.</translation>
<translation type="vanished">Diverses fonctions d&apos;isolation avancées peuvent rompre la compatibilité, avec certaines applications, si vous utilisez ce bac à sable &lt;b&gt;PAS pour la sécurité&lt;/b&gt; mais pour la simple portabilité des applications en modifiant ces options, vous pouvez rétablir la compatibilité en sacrifiant une certaine sécurité.&lt;br&gt;Ces options peuvent être utilisées en toute sécurité lorsque vous n&apos;accordez à aucun des processus mis en bac à sable des droits administrateur.</translation>
</message>
<message>
<source>Auto Exec</source>
@ -6921,7 +6922,7 @@ Veuillez noter que ces valeurs sont actuellement spécifiques à l&apos;utilisat
<message>
<location filename="Forms/OptionsWindow.ui" line="1174"/>
<source>Various isolation features can break compatibility with some applications. If you are using this sandbox &lt;b&gt;NOT for Security&lt;/b&gt; but for application portability, by changing these options you can restore compatibility by sacrificing some security.</source>
<translation>Des fonctionnalités d&apos;isolation diverses peuvent casser la compatibilité avec certaines applications. Si vous utilisez ce bac à sable &lt;b&gt;NON par sécurité&lt;/b&gt; mais pour la portabilité des applications, en modifiant ces options vous pouvez restaurer la compatibilité en sacrifiant un peu de sécurité.</translation>
<translation>Des fonctions d&apos;isolation diverses peuvent casser la compatibilité avec certaines applications. Si vous utilisez ce bac à sable &lt;b&gt;NON par sécurité&lt;/b&gt; mais pour la portabilité des applications, en modifiant ces options vous pouvez restaurer la compatibilité en sacrifiant un peu de sécurité.</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1272"/>
@ -7483,7 +7484,7 @@ Ceci est fait pour empêcher les processus malveillants à l&apos;intérieur du
<message>
<location filename="Forms/SettingsWindow.ui" line="936"/>
<source>Show overlay icons for boxes and processes</source>
<translation type="unfinished"></translation>
<translation>Afficher les superpositions d&apos;icônes pour les bacs et les processus</translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="946"/>
@ -7572,7 +7573,7 @@ Ceci est fait pour empêcher les processus malveillants à l&apos;intérieur du
<message>
<location filename="Forms/SettingsWindow.ui" line="1438"/>
<source>Sandboxing features</source>
<translation>Fonctionnalités d&apos;isolation</translation>
<translation>Fonctions d&apos;isolation</translation>
</message>
<message>
<source>Use Windows Filtering Platform to restrict network access (experimental)</source>

View File

@ -2,7 +2,7 @@
#define VERSION_MJR 1
#define VERSION_MIN 9
#define VERSION_REV 3
#define VERSION_REV 4
#define VERSION_UPD 0
#ifndef STR