Compare commits
11 Commits
8754ce48d8
...
e2fcac2914
Author | SHA1 | Date |
---|---|---|
EdgeArcher129840 | e2fcac2914 | |
DavidXanatos | 15588a4551 | |
DavidXanatos | f0403dcf36 | |
DavidXanatos | 774d1deeb6 | |
offhub | 4a6c5dd63d | |
DavidXanatos | d99e556f29 | |
DavidXanatos | e194528cb8 | |
DavidXanatos | 846a3ea29e | |
DavidXanatos | 4a8650ca9d | |
DavidXanatos | bda087c1a6 | |
DavidXanatos | f5070bbe81 |
|
@ -5,7 +5,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||
|
||||
|
||||
|
||||
## [1.13.7 / 5.68.7] - 2024-04-
|
||||
## [1.13.7 / 5.68.7] - 2024-05-01
|
||||
|
||||
### Added
|
||||
- added file version information for SbieDll.dll and SbieSvc.exe in the Sandboxie Plus About dialog
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
#define STR(X) STR2(X)
|
||||
|
||||
#define VERSION_MJR 5
|
||||
#define VERSION_MIN 70
|
||||
#define VERSION_REV 0
|
||||
#define VERSION_MIN 68
|
||||
#define VERSION_REV 7
|
||||
#define VERSION_UPD 0
|
||||
|
||||
#if VERSION_UPD > 0
|
||||
|
|
|
@ -118,6 +118,9 @@ SBIEDLL_EXPORT NTSTATUS File_GetName(
|
|||
HANDLE RootDirectory, UNICODE_STRING *ObjectName,
|
||||
WCHAR **OutTruePath, WCHAR **OutCopyPath, ULONG *OutFlags);
|
||||
|
||||
static WCHAR *File_TranslateDosToNtPath2(
|
||||
const WCHAR *DosPath, ULONG DosPathLen);
|
||||
|
||||
static WCHAR *File_GetName_TranslateSymlinks(
|
||||
THREAD_DATA *TlsData, const WCHAR *objname_buf, ULONG objname_len,
|
||||
BOOLEAN *translated);
|
||||
|
@ -262,6 +265,12 @@ static NTSTATUS File_NtDeleteFile(OBJECT_ATTRIBUTES *ObjectAttributes);
|
|||
|
||||
static NTSTATUS File_NtDeleteFileImpl(OBJECT_ATTRIBUTES *ObjectAttributes);
|
||||
|
||||
static WCHAR *File_ConcatPath2(
|
||||
const WCHAR *Path1, ULONG Path1Len, const WCHAR *Path2, ULONG Path2Len);
|
||||
|
||||
static WCHAR* File_CanonizePath(
|
||||
const wchar_t* absolute_path, ULONG abs_path_len, const wchar_t* relative_path, ULONG rel_path_len);
|
||||
|
||||
static NTSTATUS File_OpenForRenameFile(
|
||||
HANDLE* pSourceHandle, const WCHAR *TruePath);
|
||||
|
||||
|
|
|
@ -549,11 +549,11 @@ _FX VOID File_SavePathTree_internal(LIST* Root, const WCHAR* name, WCHAR* (*Tran
|
|||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// File_TranslateNtToDosPath2
|
||||
// File_TranslateNtToDosPathForDatFile
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
_FX WCHAR* File_TranslateNtToDosPath2(const WCHAR *NtPath)
|
||||
_FX WCHAR* File_TranslateNtToDosPathForDatFile(const WCHAR *NtPath)
|
||||
{
|
||||
WCHAR *DosPath = NULL;
|
||||
ULONG len_nt;
|
||||
|
@ -635,7 +635,7 @@ _FX BOOLEAN File_SavePathTree()
|
|||
{
|
||||
EnterCriticalSection(File_PathRoot_CritSec);
|
||||
|
||||
File_SavePathTree_internal(&File_PathRoot, FILE_PATH_FILE_NAME, File_TranslateNtToDosPath2);
|
||||
File_SavePathTree_internal(&File_PathRoot, FILE_PATH_FILE_NAME, File_TranslateNtToDosPathForDatFile);
|
||||
|
||||
File_GetAttributes_internal(FILE_PATH_FILE_NAME, &File_PathsFileSize, &File_PathsFileDate, NULL);
|
||||
|
||||
|
@ -764,14 +764,13 @@ _FX BOOLEAN File_LoadPathTree_internal(LIST* Root, const WCHAR* name, WCHAR* (*T
|
|||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// File_TranslateDosToNtPath2
|
||||
// File_TranslateDosToNtPathForDatFile
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
_FX WCHAR *File_TranslateDosToNtPath2(const WCHAR *DosPath)
|
||||
_FX WCHAR *File_TranslateDosToNtPathForDatFile(const WCHAR *DosPath)
|
||||
{
|
||||
WCHAR *NtPath = NULL;
|
||||
ULONG len_dos;
|
||||
|
||||
if (DosPath && DosPath[0] && DosPath[1]) {
|
||||
|
||||
|
@ -782,10 +781,7 @@ _FX WCHAR *File_TranslateDosToNtPath2(const WCHAR *DosPath)
|
|||
//
|
||||
|
||||
DosPath += 2;
|
||||
len_dos = wcslen(DosPath) + 1;
|
||||
NtPath = Dll_Alloc((File_MupLen + len_dos) * sizeof(WCHAR));
|
||||
wmemcpy(NtPath, File_Mup, File_MupLen);
|
||||
wmemcpy(NtPath + File_MupLen, DosPath, len_dos);
|
||||
NtPath = File_ConcatPath2(File_Mup, File_MupLen, DosPath, wcslen(DosPath));
|
||||
|
||||
} else if (DosPath[0] != L'\\') {
|
||||
|
||||
|
@ -815,10 +811,7 @@ _FX WCHAR *File_TranslateDosToNtPath2(const WCHAR *DosPath)
|
|||
}
|
||||
|
||||
DosPath += path_pos;
|
||||
len_dos = wcslen(DosPath) + 1;
|
||||
NtPath = Dll_Alloc((drive->len + len_dos) * sizeof(WCHAR));
|
||||
wmemcpy(NtPath, drive->path, drive->len);
|
||||
wmemcpy(NtPath + drive->len, DosPath, len_dos);
|
||||
NtPath = File_ConcatPath2(drive->path, drive->len, DosPath, wcslen(DosPath));
|
||||
|
||||
LeaveCriticalSection(File_DrivesAndLinks_CritSec);
|
||||
}
|
||||
|
@ -841,7 +834,7 @@ _FX BOOLEAN File_LoadPathTree()
|
|||
|
||||
EnterCriticalSection(File_PathRoot_CritSec);
|
||||
|
||||
File_LoadPathTree_internal(&File_PathRoot, FILE_PATH_FILE_NAME, File_TranslateDosToNtPath2);
|
||||
File_LoadPathTree_internal(&File_PathRoot, FILE_PATH_FILE_NAME, File_TranslateDosToNtPathForDatFile);
|
||||
|
||||
LeaveCriticalSection(File_PathRoot_CritSec);
|
||||
|
||||
|
@ -1038,7 +1031,7 @@ _FX NTSTATUS File_MarkDeleted_v2(const WCHAR* TruePath)
|
|||
HANDLE hPathsFile;
|
||||
if (File_OpenDataFile(FILE_PATH_FILE_NAME, &hPathsFile, TRUE))
|
||||
{
|
||||
File_AppendPathEntry_internal(hPathsFile, Path, FILE_DELETED_FLAG, NULL, File_TranslateNtToDosPath2);
|
||||
File_AppendPathEntry_internal(hPathsFile, Path, FILE_DELETED_FLAG, NULL, File_TranslateNtToDosPathForDatFile);
|
||||
|
||||
NtClose(hPathsFile);
|
||||
|
||||
|
|
|
@ -3353,9 +3353,17 @@ _FX NTSTATUS File_SetReparsePoint(
|
|||
//TargetPath = Dll_Alloc((wcslen(CopyPath) + 4) * sizeof(WCHAR));
|
||||
//wcscpy(TargetPath, CopyPath);
|
||||
|
||||
WCHAR* NewSubstituteNameBuffer = CopyPath;
|
||||
WCHAR* OldPrintNameBuffer = PrintNameBuffer; // we don't need to change the display name
|
||||
|
||||
if (Data->ReparseTag == IO_REPARSE_TAG_SYMLINK) {
|
||||
|
||||
SubstituteNameLength = wcslen(CopyPath) * sizeof(WCHAR);
|
||||
SbieDll_TranslateNtToDosPath(NewSubstituteNameBuffer);
|
||||
memmove(NewSubstituteNameBuffer + 4, NewSubstituteNameBuffer, (wcslen(NewSubstituteNameBuffer) + 1) * sizeof(wchar_t));
|
||||
wcsncpy(NewSubstituteNameBuffer, L"\\??\\", 4);
|
||||
}
|
||||
|
||||
SubstituteNameLength = wcslen(NewSubstituteNameBuffer) * sizeof(WCHAR);
|
||||
|
||||
NewDataLen += SubstituteNameLength + sizeof(WCHAR) + PrintNameLength + sizeof(WCHAR) + 8;
|
||||
NewData = Dll_Alloc(NewDataLen);
|
||||
|
@ -3385,7 +3393,7 @@ _FX NTSTATUS File_SetReparsePoint(
|
|||
PrintNameBuffer = &NewData->MountPointReparseBuffer.PathBuffer[NewData->MountPointReparseBuffer.PrintNameOffset/sizeof(WCHAR)];
|
||||
}
|
||||
|
||||
memcpy(SubstituteNameBuffer, CopyPath, SubstituteNameLength + sizeof(WCHAR));
|
||||
memcpy(SubstituteNameBuffer, NewSubstituteNameBuffer, SubstituteNameLength + sizeof(WCHAR));
|
||||
memcpy(PrintNameBuffer, OldPrintNameBuffer, PrintNameLength + sizeof(WCHAR));
|
||||
|
||||
} __except (EXCEPTION_EXECUTE_HANDLER) {
|
||||
|
|
|
@ -1665,14 +1665,29 @@ _FX WCHAR *File_AllocAndInitEnvironment_2(
|
|||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// File_TranslateDosToNtPath
|
||||
// File_ConcatPath2
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
_FX WCHAR *File_TranslateDosToNtPath(const WCHAR *DosPath)
|
||||
_FX WCHAR *File_ConcatPath2(const WCHAR *Path1, ULONG Path1Len, const WCHAR *Path2, ULONG Path2Len)
|
||||
{
|
||||
ULONG Length = Path1Len + Path2Len;
|
||||
WCHAR* Path = Dll_Alloc((Length + 1) * sizeof(WCHAR));
|
||||
wmemcpy(Path, Path1, Path1Len);
|
||||
wmemcpy(Path + Path1Len, Path2, Path2Len);
|
||||
Path[Length] = L'\0';
|
||||
return Path;
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// File_TranslateDosToNtPath2
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
_FX WCHAR *File_TranslateDosToNtPath2(const WCHAR *DosPath, ULONG DosPathLen)
|
||||
{
|
||||
WCHAR *NtPath = NULL;
|
||||
ULONG len_dos;
|
||||
|
||||
if (DosPath && DosPath[0] && DosPath[1]) {
|
||||
|
||||
|
@ -1682,11 +1697,7 @@ _FX WCHAR *File_TranslateDosToNtPath(const WCHAR *DosPath)
|
|||
// network path
|
||||
//
|
||||
|
||||
DosPath += 2;
|
||||
len_dos = wcslen(DosPath) + 1;
|
||||
NtPath = Dll_Alloc((File_MupLen + len_dos) * sizeof(WCHAR));
|
||||
wmemcpy(NtPath, File_Mup, File_MupLen);
|
||||
wmemcpy(NtPath + File_MupLen, DosPath, len_dos);
|
||||
NtPath = File_ConcatPath2(File_Mup, File_MupLen, DosPath + 2, DosPathLen - 2);
|
||||
|
||||
} else if (DosPath[1] == L':' &&
|
||||
(DosPath[2] == L'\\' || DosPath[2] == L'\0')) {
|
||||
|
@ -1698,11 +1709,7 @@ _FX WCHAR *File_TranslateDosToNtPath(const WCHAR *DosPath)
|
|||
FILE_DRIVE *drive = File_GetDriveForLetter(DosPath[0]);
|
||||
if (drive) {
|
||||
|
||||
DosPath += 2;
|
||||
len_dos = wcslen(DosPath) + 1;
|
||||
NtPath = Dll_Alloc((drive->len + len_dos) * sizeof(WCHAR));
|
||||
wmemcpy(NtPath, drive->path, drive->len);
|
||||
wmemcpy(NtPath + drive->len, DosPath, len_dos);
|
||||
NtPath = File_ConcatPath2(drive->path, drive->len, DosPath + 2, DosPathLen - 2);
|
||||
|
||||
LeaveCriticalSection(File_DrivesAndLinks_CritSec);
|
||||
}
|
||||
|
@ -1713,6 +1720,17 @@ _FX WCHAR *File_TranslateDosToNtPath(const WCHAR *DosPath)
|
|||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// File_TranslateDosToNtPath
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
_FX WCHAR *File_TranslateDosToNtPath(const WCHAR *DosPath)
|
||||
{
|
||||
return File_TranslateDosToNtPath2(DosPath, DosPath ? wcslen(DosPath) : 0);
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// File_GetSetDeviceMap
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
@ -322,35 +322,45 @@ _FX FILE_GUID *File_GetLinkForGuid(const WCHAR* guid_str)
|
|||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// File_TranslateGuidToNtPath2
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
_FX WCHAR* File_TranslateGuidToNtPath2(const WCHAR* GuidPath, ULONG GuidPathLen)
|
||||
{
|
||||
WCHAR* NtPath = NULL;
|
||||
|
||||
if (GuidPath && GuidPathLen >= 48 && _wcsnicmp(GuidPath, L"\\??\\Volume{", 11) == 0) {
|
||||
|
||||
//
|
||||
// guid path
|
||||
//
|
||||
|
||||
FILE_GUID* guid = File_GetLinkForGuid(&GuidPath[10]);
|
||||
if (guid) {
|
||||
|
||||
File_ConcatPath2(guid->path, guid->len, GuidPath + 48, GuidPathLen - 48);
|
||||
|
||||
LeaveCriticalSection(File_DrivesAndLinks_CritSec);
|
||||
}
|
||||
}
|
||||
|
||||
return NtPath;
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// File_TranslateGuidToNtPath
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
_FX WCHAR* File_TranslateGuidToNtPath(const WCHAR* input_str)
|
||||
|
||||
_FX WCHAR* File_TranslateGuidToNtPath(const WCHAR* GuidPath)
|
||||
{
|
||||
ULONG len;
|
||||
WCHAR* NtPath;
|
||||
|
||||
if (_wcsnicmp(input_str, L"\\??\\Volume{", 11) != 0)
|
||||
return NULL;
|
||||
|
||||
FILE_GUID* guid = File_GetLinkForGuid(&input_str[10]);
|
||||
if (guid) {
|
||||
|
||||
input_str += 48;
|
||||
len = wcslen(input_str) + 1;
|
||||
NtPath = Dll_Alloc((guid->len + len) * sizeof(WCHAR));
|
||||
wmemcpy(NtPath, guid->path, guid->len);
|
||||
wmemcpy(NtPath + guid->len, input_str, len);
|
||||
|
||||
LeaveCriticalSection(File_DrivesAndLinks_CritSec);
|
||||
|
||||
return NtPath;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return File_TranslateGuidToNtPath2(GuidPath, GuidPath ? wcslen(GuidPath) : 0);
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// File_AddLink
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -1036,47 +1046,49 @@ _FX FILE_LINK *File_AddTempLink(WCHAR *path)
|
|||
if (NT_SUCCESS(status)) {
|
||||
|
||||
WCHAR* SubstituteNameBuffer = NULL;
|
||||
//WCHAR* PrintNameBuffer = NULL;
|
||||
ULONG SubstituteNameLength = 0;
|
||||
BOOL RelativePath = FALSE;
|
||||
|
||||
if (reparseDataBuffer->ReparseTag == IO_REPARSE_TAG_SYMLINK)
|
||||
{
|
||||
if (reparseDataBuffer->ReparseTag == IO_REPARSE_TAG_SYMLINK) {
|
||||
|
||||
SubstituteNameBuffer = &reparseDataBuffer->SymbolicLinkReparseBuffer.PathBuffer[reparseDataBuffer->SymbolicLinkReparseBuffer.SubstituteNameOffset/sizeof(WCHAR)];
|
||||
if (reparseDataBuffer->SymbolicLinkReparseBuffer.Flags & SYMLINK_FLAG_RELATIVE)
|
||||
RelativePath = TRUE;
|
||||
SubstituteNameBuffer[reparseDataBuffer->SymbolicLinkReparseBuffer.SubstituteNameLength / sizeof(WCHAR)] = 0;
|
||||
}
|
||||
else if (reparseDataBuffer->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT)
|
||||
{
|
||||
SubstituteNameLength = reparseDataBuffer->SymbolicLinkReparseBuffer.SubstituteNameLength;
|
||||
|
||||
} else if (reparseDataBuffer->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) {
|
||||
|
||||
SubstituteNameBuffer = &reparseDataBuffer->MountPointReparseBuffer.PathBuffer[reparseDataBuffer->MountPointReparseBuffer.SubstituteNameOffset/sizeof(WCHAR)];
|
||||
SubstituteNameBuffer[reparseDataBuffer->MountPointReparseBuffer.SubstituteNameLength / sizeof(WCHAR)] = 0;
|
||||
SubstituteNameLength = reparseDataBuffer->MountPointReparseBuffer.SubstituteNameLength;
|
||||
}
|
||||
|
||||
if (SubstituteNameBuffer)
|
||||
{
|
||||
if (RelativePath)
|
||||
{
|
||||
// todo RelativePath - for now we fall back to the old method
|
||||
}
|
||||
else
|
||||
{
|
||||
WCHAR* input_str = SubstituteNameBuffer;
|
||||
if (SubstituteNameBuffer) {
|
||||
|
||||
WCHAR* input_str = NULL;
|
||||
if (RelativePath) {
|
||||
|
||||
WCHAR* LinkName = wcsrchr(path, L'\\');
|
||||
input_str = File_CanonizePath(path, (ULONG)(LinkName - path), SubstituteNameBuffer, SubstituteNameLength / sizeof(WCHAR));
|
||||
|
||||
} else {
|
||||
|
||||
input_str = SubstituteNameBuffer;
|
||||
if (_wcsnicmp(input_str, L"\\??\\Volume{", 11) == 0)
|
||||
input_str = File_TranslateGuidToNtPath(SubstituteNameBuffer);
|
||||
input_str = File_TranslateGuidToNtPath2(SubstituteNameBuffer, SubstituteNameLength / sizeof(WCHAR));
|
||||
else if (_wcsnicmp(input_str, File_BQQB, 4) == 0)
|
||||
input_str = File_TranslateDosToNtPath(SubstituteNameBuffer + 4);
|
||||
input_str = File_TranslateDosToNtPath2(SubstituteNameBuffer + 4, (SubstituteNameLength / sizeof(WCHAR)) - 4);
|
||||
}
|
||||
|
||||
if (input_str) {
|
||||
if (input_str) {
|
||||
|
||||
ULONG input_len = wcslen(input_str);
|
||||
while (input_len > 0 && input_str[input_len - 1] == L'\\')
|
||||
input_len -= 1; // remove trailing backslash
|
||||
ULONG input_len = wcslen(input_str);
|
||||
while (input_len > 0 && input_str[input_len - 1] == L'\\')
|
||||
input_len -= 1; // remove trailing backslash
|
||||
|
||||
newpath = File_TranslateTempLinks_2(input_str, input_len);
|
||||
newpath = File_TranslateTempLinks_2(input_str, input_len);
|
||||
|
||||
if (input_str != SubstituteNameBuffer)
|
||||
Dll_Free(input_str);
|
||||
}
|
||||
if (input_str != SubstituteNameBuffer)
|
||||
Dll_Free(input_str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -182,7 +182,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
|
@ -207,7 +207,7 @@
|
|||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalOptions> /SUBSYSTEM:WINDOWS</AdditionalOptions>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
|
@ -228,7 +228,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
|
@ -249,7 +249,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
|
@ -273,7 +273,7 @@
|
|||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalOptions> /SUBSYSTEM:WINDOWS</AdditionalOptions>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>QSbieAPI.lib;MiscHelpers.lib;ntdll.lib;QtSingleApp.lib;UGlobalHotkey.lib;comctl32.lib;bcrypt.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -185,7 +185,7 @@
|
|||
<message>
|
||||
<location filename="Wizards/NewBoxWizard.cpp" line="748"/>
|
||||
<source>Drop rights from Administrators and Power Users groups</source>
|
||||
<translation type="unfinished">Retirer les droits des groupes Administrateurs et Utilisateurs Avancés</translation>
|
||||
<translation>Abandonner les droits des groupes Administrateurs et Utilisateurs Avancés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Wizards/NewBoxWizard.cpp" line="754"/>
|
||||
|
@ -3759,22 +3759,22 @@ Ce fichier fait partie de Sandboxie et toute modification faite sur lui sera ann
|
|||
<message>
|
||||
<location filename="SandMan.cpp" line="4303"/>
|
||||
<source><h3>About Sandboxie-Plus</h3><p>Version %1</p><p></source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation><h3>À propos de Sandboxie-Plus</h3><p>Version %1</p><p></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="SandMan.cpp" line="4311"/>
|
||||
<source>This copy of Sandboxie-Plus is certified for: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Cette copie de Sandboxie-Plus est attestée pour : %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="SandMan.cpp" line="4313"/>
|
||||
<source>Sandboxie-Plus is free for personal and non-commercial use.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sandboxie-Plus est gratuit pour une utilisation personnelle et non commerciale.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="SandMan.cpp" line="4317"/>
|
||||
<source>Sandboxie-Plus is an open source continuation of Sandboxie.<br />Visit <a href="https://sandboxie-plus.com">sandboxie-plus.com</a> for more information.<br /><br />%2<br /><br />Features: %3<br /><br />Installation: %1<br />SbieDrv.sys: %4<br /> SbieSvc.exe: %5<br /> SbieDll.dll: %6<br /><br />Icons from <a href="https://icons8.com">icons8.com</a></source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sandboxie-Plus est la poursuite en code source ouvert de Sandboxie.<br />Visitez <a href="https://sandboxie-plus.com">sandboxie-plus.com</a> pour plus d'informations.<br /><br />%2<br /><br />Fonctions : %3<br /><br />Installation : %1<br />SbieDrv.sys : %4<br /> SbieSvc.exe : %5<br /> SbieDll.dll : %6<br /><br />Icônes provenant de <a href="https://icons8.com">icons8.com</a></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Your Windows build exceeds the current support capabilities of your Sandboxie version, resulting in the disabling of token-based security isolation. Consequently, all applications will operate in application compartment mode without secure isolation.<byte value="xd"/>
|
||||
|
@ -7173,7 +7173,7 @@ Idéal s'il y a un grand nombre de petits fichiers, cela rendra l'arch
|
|||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="1123"/>
|
||||
<source>Drop rights from Administrators and Power Users groups</source>
|
||||
<translation>Retirer les droits des groupes Administrateurs et Utilisateurs Avancés</translation>
|
||||
<translation>Abandonner les droits des groupes Administrateurs et Utilisateurs Avancés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="227"/>
|
||||
|
@ -7514,7 +7514,7 @@ Idéal s'il y a un grand nombre de petits fichiers, cela rendra l'arch
|
|||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="1147"/>
|
||||
<source>Note: Msi Installer Exemptions should not be required, but if you encounter issues installing a msi package which you trust, this option may help the installation complete successfully. You can also try disabling drop admin rights.</source>
|
||||
<translation>Remarque : Les exemptions de l'installeur MicroSoft (MSI) ne devraient pas être nécessaires, mais si vous rencontrez des problèmes lors de l'installation d'un paquetage MSI auquel vous faites confiance, cette option peut aider l'installation à se terminer avec succès. Vous pouvez également essayer de désactiver la suppression des droits d'administrateur.</translation>
|
||||
<translation>Remarque : Les exemptions de l'installeur MicroSoft (MSI) ne devraient pas être nécessaires, mais si vous rencontrez des problèmes lors de l'installation d'un paquetage MSI auquel vous faites confiance, cette option peut aider l'installation à se terminer avec succès. Vous pouvez également essayer de désactiver l'abandon des droits d'administrateur.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="244"/>
|
||||
|
@ -8157,7 +8157,7 @@ Pour l'accès aux fichiers, vous pouvez utiliser « Toujours direct » pour
|
|||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="1623"/>
|
||||
<source>Drop critical privileges from processes running with a SYSTEM token</source>
|
||||
<translation>Retirer les privilèges critiques des processus tournant avec un jeton SYSTÈME</translation>
|
||||
<translation>Abandonner les privilèges critiques des processus tournant avec un jeton SYSTÈME</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="1616"/>
|
||||
|
@ -8558,7 +8558,7 @@ au lieu de « * ».</translation>
|
|||
<location filename="Forms/OptionsWindow.ui" line="823"/>
|
||||
<source>Prevent move mouse, bring in front, and similar operations, this is likely to cause issues with games.</source>
|
||||
<oldsource>Prevent move mouse, bring in front, and simmilar operations, this is likely to cause issues with games.</oldsource>
|
||||
<translation type="unfinished">Empêcher les mouvements à la souris, la mise au premier plan, et les opérations similaires (activer ceci est susceptible de causer des problèmes avec les jeux).</translation>
|
||||
<translation>Empêcher les mouvements à la souris, la mise au premier plan, et les opérations similaires (activer ceci est susceptible de causer des problèmes avec les jeux).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="826"/>
|
||||
|
@ -8569,7 +8569,7 @@ au lieu de « * ».</translation>
|
|||
<location filename="Forms/OptionsWindow.ui" line="833"/>
|
||||
<source>This feature does not block all means of obtaining a screen capture, only some common ones.</source>
|
||||
<oldsource>This feature does not block all means of optaining a screen capture only some common once.</oldsource>
|
||||
<translation type="unfinished">Cette fonction ne bloque pas tous les moyens d'obtenir une capture d'écran, seulement les plus communs.</translation>
|
||||
<translation>Cette fonction ne bloque pas tous les moyens d'obtenir une capture d'écran, seulement les plus communs.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="836"/>
|
||||
|
@ -8673,7 +8673,7 @@ Veuillez noter que ces valeurs sont actuellement spécifiques à l'utilisat
|
|||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="5050"/>
|
||||
<source>To compensate for the lost protection, please consult the Drop Rights settings page in the Restrictions settings group.</source>
|
||||
<translation>Pour compenser la perte de protection, veuillez consulter la page d'abandon des droits dans le groupe de paramètres Restrictions.</translation>
|
||||
<translation>Pour compenser la perte de protection, veuillez consulter la page d'Abandon des droits dans le groupe de paramètres Restrictions.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Forms/OptionsWindow.ui" line="4974"/>
|
||||
|
@ -9458,7 +9458,7 @@ Ceci est fait pour empêcher les processus malveillants à l'intérieur du
|
|||
<location filename="Forms/SettingsWindow.ui" line="80"/>
|
||||
<source>Hotkey for suspending all processes:</source>
|
||||
<oldsource>Hotkey for suspending all process</oldsource>
|
||||
<translation type="unfinished">Raccourci pour suspendre tous les processus :</translation>
|
||||
<translation>Raccourci pour suspendre tous les processus :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="Forms/SettingsWindow.ui" line="632"/>
|
||||
|
|
Loading…
Reference in New Issue