This commit is contained in:
DavidXanatos 2021-01-12 09:10:25 +01:00
parent 8540e009a1
commit 6673813a61
21 changed files with 445 additions and 352 deletions

View File

@ -4,6 +4,22 @@ This project adheres to [Semantic Versioning](http://semver.org/).
## [0.5.4c / 5.46.2] - 2021-01-10
### Added
- added "CallTrace=*" to log all system calls to the access log
### Changed
- improved ipc logging code
- improved MSG_2101 logging
### Fixed
- fixed more issues with ipc tracing
- fixed SBIE2101 issue with crome and derivatives
## [0.5.4b / 5.46.1] - 2021-01-08
### Added

View File

@ -97,6 +97,7 @@ BOOL CMonitorDialog::OnInitDialog()
void CMonitorDialog::OnIdle()
{
static const WCHAR *_Unknown = L"(Unk) ";
static const WCHAR *_SysCall = L"SysCall ";
static const WCHAR *_Pipe = L"Pipe ";
static const WCHAR *_Ipc = L"Ipc ";
static const WCHAR *_WinClass = L"WinCls ";
@ -146,7 +147,9 @@ void CMonitorDialog::OnIdle()
type &= 0x0FFF;
const WCHAR *PrefixPtr = _Unknown;
if (type == MONITOR_PIPE)
if (type == MONITOR_SYSCALL)
PrefixPtr = _SysCall;
else if (type == MONITOR_PIPE)
PrefixPtr = _Pipe;
else if (type == MONITOR_IPC)
PrefixPtr = _Ipc;

View File

@ -21,8 +21,8 @@
#ifndef _MY_VERSION_H
#define _MY_VERSION_H
#define MY_VERSION_BINARY 5,46,1
#define MY_VERSION_STRING "5.46.1"
#define MY_VERSION_BINARY 5,46,2
#define MY_VERSION_STRING "5.46.2"
#define MY_VERSION_COMPAT "5.46.0" // this refers to the driver ABI compatibility
// These #defines are used by either Resource Compiler, or by NSIC installer

View File

@ -3314,7 +3314,7 @@ _FX void Com_Trace(
return;
text = Com_Alloc(1024 * sizeof(WCHAR));
ptr = text + Sbie_snwprintf(text, 1024, L"SBIE %s <%08X> ", TraceType, hr);
ptr = text + Sbie_snwprintf(text, 1024, L"COM %s <%08X> ", TraceType, hr);
if (rclsid) {
Com_Trace_Guid(ptr, rclsid, L"CLSID");

View File

@ -269,6 +269,19 @@ WCHAR* GetDynamicLpcPortName(ENUM_DYNAMIC_PORT_TYPE portType)
rpl = (EPMAPPER_GET_PORT_NAME_RPL*)SbieDll_CallServer(&req.h);
WCHAR wsTraceOptions[4];
if (SbieApi_QueryConf(NULL, L"IpcTrace", 0, wsTraceOptions, sizeof(wsTraceOptions)) == STATUS_SUCCESS && wsTraceOptions[0] != L'\0')
{
WCHAR text[130];
if (rpl && NT_SUCCESS(rpl->h.status))
Sbie_snwprintf(text, 130, L"Resolved dynamic port: %d; endpoint: %s", req.portType, rpl->wszPortName);
else
Sbie_snwprintf(text, 130, L"Failed to resolve dynamic port: %d; status: %08X", req.portType, rpl ? rpl->h.status : 0);
SbieApi_MonitorPut2(MONITOR_IPC | MONITOR_TRACE, text, FALSE);
}
if (rpl && NT_SUCCESS(rpl->h.status))
{
wcsncpy(g_Ipc_DynamicPortNames[portType], rpl->wszPortName, DYNAMIC_PORT_NAME_CHARS);
@ -377,15 +390,16 @@ _FX ULONG RpcRt_RpcBindingFromStringBindingW(
status = __sys_RpcBindingFromStringBindingW(StringBinding, OutBinding);
// If there are any IpcTrace options set, then output this debug string
WCHAR wsTraceOptions[4];
if (SbieApi_QueryConf(NULL, L"IpcTrace", 0, wsTraceOptions, sizeof(wsTraceOptions)) == STATUS_SUCCESS && wsTraceOptions != L'\0')
if (SbieApi_QueryConf(NULL, L"IpcTrace", 0, wsTraceOptions, sizeof(wsTraceOptions)) == STATUS_SUCCESS && wsTraceOptions[0] != L'\0')
{
WCHAR msg[512];
Sbie_snwprintf(msg, 512, L"SBIE p=%06d t=%06d RpcBindingFromStringBindingW StringBinding = '%s', BindingHandle = 0x%X, status = 0x%X\n", GetCurrentProcessId(), GetCurrentThreadId(),
StringBinding,
OutBinding,
status);
//Sbie_snwprintf(msg, 512, L"SBIE p=%06d t=%06d RpcBindingFromStringBindingW StringBinding = '%s', BindingHandle = 0x%X, status = 0x%X\n", GetCurrentProcessId(), GetCurrentThreadId(),
Sbie_snwprintf(msg, 512, L"StringBinding = '%s', BindingHandle = 0x%X, status = 0x%08X",
StringBinding, OutBinding, status);
//OutputDebugString(msg);
SbieApi_MonitorPut(MONITOR_IPC | MONITOR_TRACE, msg);
SbieApi_MonitorPut2(MONITOR_IPC | MONITOR_TRACE, msg, FALSE);
}
__sys_RpcMgmtSetComTimeout(*OutBinding, RPC_C_BINDING_TIMEOUT);
return status;
@ -442,14 +456,14 @@ _FX RPC_STATUS RpcRt_RpcBindingCreateW(
RPC_CSTR StringUuid;
__sys_UuidToStringW(&Template->ObjectUuid, &StringUuid);
Sbie_snwprintf(msg, 512, L"SBIE p=%06d t=%06d RpcBindingCreateW Endpoint = '%s', UUID = %s, status = 0x%X\n", GetCurrentProcessId(), GetCurrentThreadId(),
//Sbie_snwprintf(msg, 512, L"SBIE p=%06d t=%06d RpcBindingCreateW Endpoint = '%s', UUID = %s, status = 0x%X\n", GetCurrentProcessId(), GetCurrentThreadId(),
Sbie_snwprintf(msg, 512, L"Endpoint = '%s', UUID = %s, status = 0x%08X",
Template && Template->StringEndpoint ? Template->StringEndpoint : L"null",
StringUuid,
status);
StringUuid, status);
__sys_RpcStringFreeW(&StringUuid);
//OutputDebugString(msg);
SbieApi_MonitorPut(MONITOR_IPC | MONITOR_TRACE, msg);
SbieApi_MonitorPut2(MONITOR_IPC | MONITOR_TRACE, msg, FALSE);
}
__sys_RpcMgmtSetComTimeout(*Binding, RPC_C_BINDING_TIMEOUT);
return status;

View File

@ -41,7 +41,7 @@
#define DUPLICATE_INHERIT 0x00040000
#define DUPLICATE_INTO_OTHER 0x00080000 // otherwise DUP_FROM_OTHER
#define MONITOR_SYSCALL 0x000B
#define MONITOR_PIPE 0x011B
#define MONITOR_IPC 0x022B
#define MONITOR_WINCLASS 0x033B
@ -51,6 +51,12 @@
#define MONITOR_IMAGE 0x077B
#define MONITOR_FILE_OR_KEY 0x088B
#define MONITOR_OTHER 0x099B
//#define MONITOR_ 0x0AAB
//#define MONITOR_ 0x0BBB
//#define MONITOR_ 0x0CCB
//#define MONITOR_ 0x0DDB
//#define MONITOR_ 0x0EEB
//#define MONITOR_ 0x0FFB
#define MONITOR_OPEN 0x1000
#define MONITOR_DENY 0x2000
#define MONITOR_TRACE 0x8000

View File

@ -210,14 +210,13 @@ _FX BOOLEAN Ipc_Init(void)
return FALSE;
}
// Note: those don't have a special treatment
//if (Driver_OsVersion >= DRIVER_WINDOWS_10) {
//
// if(!Mem_GetLockResource(&Ipc_Dynamic_Ports[WPAD_PORT].pPortLock, TRUE)
// || !Mem_GetLockResource(&Ipc_Dynamic_Ports[GAME_CONFIG_STORE_PORT].pPortLock, TRUE)
// || !Mem_GetLockResource(&Ipc_Dynamic_Ports[SMART_CARD_PORT].pPortLock, TRUE)
// ) return FALSE;
//}
if (Driver_OsVersion >= DRIVER_WINDOWS_10) {
if(!Mem_GetLockResource(&Ipc_Dynamic_Ports[WPAD_PORT].pPortLock, TRUE)
|| !Mem_GetLockResource(&Ipc_Dynamic_Ports[GAME_CONFIG_STORE_PORT].pPortLock, TRUE)
|| !Mem_GetLockResource(&Ipc_Dynamic_Ports[SMART_CARD_PORT].pPortLock, TRUE)
) return FALSE;
}
//
// finish
@ -872,34 +871,34 @@ _FX NTSTATUS Ipc_CheckGenericObject(
status = STATUS_ACCESS_DENIED;
}
// Note: since version 5.46 these are open only per process
//else if (!is_open && !is_closed)
//{
// int i;
// for (i = 0; i < NUM_DYNAMIC_PORTS; i++)
// {
// if (Ipc_Dynamic_Ports[i].pPortLock)
// {
// KeEnterCriticalRegion();
// ExAcquireResourceSharedLite(Ipc_Dynamic_Ports[i].pPortLock, TRUE);
//
// if (*Ipc_Dynamic_Ports[i].wstrPortName
// && (Name->Length >= 32 * sizeof(WCHAR))
// && _wcsicmp(Name->Buffer, Ipc_Dynamic_Ports[i].wstrPortName) == 0)
// {
// // dynamic version of RPC ports, see also ipc_spl.c
// // and RpcBindingFromStringBindingW in core/dll/rpcrt.c
// is_open = TRUE;
// }
//
// ExReleaseResourceLite(Ipc_Dynamic_Ports[i].pPortLock);
// KeLeaveCriticalRegion();
//
// if (is_open)
// break;
// }
// }
//}
else if (!is_open && !is_closed)
{
int i;
for (i = 0; i < NUM_DYNAMIC_PORTS; i++)
{
if (Ipc_Dynamic_Ports[i].pPortLock)
{
KeEnterCriticalRegion();
ExAcquireResourceSharedLite(Ipc_Dynamic_Ports[i].pPortLock, TRUE);
if (*Ipc_Dynamic_Ports[i].wstrPortName
&& (Name->Length >= 32 * sizeof(WCHAR))
&& _wcsicmp(Name->Buffer, Ipc_Dynamic_Ports[i].wstrPortName) == 0)
{
// dynamic version of RPC ports, see also ipc_spl.c
// and RpcBindingFromStringBindingW in core/dll/rpcrt.c
is_open = TRUE;
}
ExReleaseResourceLite(Ipc_Dynamic_Ports[i].pPortLock);
KeLeaveCriticalRegion();
if (is_open)
break;
}
}
}
if (is_closed || (! is_open))
status = STATUS_ACCESS_DENIED;

View File

@ -125,7 +125,7 @@ _FX BOOLEAN Ipc_Filter_Lsa_Ep_Msg(UCHAR uMsg)
WCHAR access_str[24];
swprintf(access_str, L" Msg: %02X", (ULONG)uMsg);
const WCHAR* strings[3] = { L"\\RPC Control\\LSARPC_ENDPOINT", access_str, NULL };
Session_MonitorPutEx(MONITOR_IPC | (filter ? MONITOR_DENY : MONITOR_OPEN), strings, PsGetCurrentProcessId());
Session_MonitorPutEx(MONITOR_IPC | (filter ? MONITOR_DENY : MONITOR_OPEN), strings, NULL, PsGetCurrentProcessId());
}
return filter;

View File

@ -71,7 +71,7 @@ static const WCHAR *_rpc_control = L"\\RPC Control";
//---------------------------------------------------------------------------
// Param 1 is dynamic port name (e.g. "\RPC Control\LRPC-f760d5b40689a98168"), WCHAR[DYNAMIC_PORT_NAME_CHARS]
// Param 2 is the process PID for which to open the port
// Param 2 is the process PID for which to open the port, can be 0 when port is special
// Param 3 is the port type/identifier, can be -1 indicating non special port
_FX NTSTATUS Ipc_Api_OpenDynamicPort(PROCESS* proc, ULONG64* parms)
@ -109,43 +109,46 @@ _FX NTSTATUS Ipc_Api_OpenDynamicPort(PROCESS* proc, ULONG64* parms)
if (!NT_SUCCESS(status))
return status;
//proc = Process_Find(pArgs->process_id.val, &irql);
proc = Process_Find(pArgs->process_id.val, NULL);
if (proc && (proc != PROCESS_TERMINATED))
//
// When this is a special port save it our global Ipc_Dynamic_Ports structure
//
if (ePortType != NUM_DYNAMIC_PORTS && Ipc_Dynamic_Ports[ePortType].pPortLock)
{
//
// When this is a special port save it our global Ipc_Dynamic_Ports structure
//
KeEnterCriticalRegion();
ExAcquireResourceExclusiveLite(Ipc_Dynamic_Ports[ePortType].pPortLock, TRUE);
if (ePortType != NUM_DYNAMIC_PORTS && Ipc_Dynamic_Ports[ePortType].pPortLock)
{
KeEnterCriticalRegion();
ExAcquireResourceExclusiveLite(Ipc_Dynamic_Ports[ePortType].pPortLock, TRUE);
wmemcpy(Ipc_Dynamic_Ports[ePortType].wstrPortName, portName, DYNAMIC_PORT_NAME_CHARS);
wmemcpy(Ipc_Dynamic_Ports[ePortType].wstrPortName, portName, DYNAMIC_PORT_NAME_CHARS);
ExReleaseResourceLite(Ipc_Dynamic_Ports[ePortType].pPortLock);
KeLeaveCriticalRegion();
}
//
// Open the port for the selected process
//
KIRQL irql2;
KeRaiseIrql(APC_LEVEL, &irql2);
ExAcquireResourceExclusiveLite(proc->ipc_lock, TRUE);
Process_AddPath(proc, &proc->open_ipc_paths, NULL, FALSE, portName, FALSE);
ExReleaseResourceLite(proc->ipc_lock);
KeLowerIrql(irql2);
ExReleaseResourceLite(Ipc_Dynamic_Ports[ePortType].pPortLock);
KeLeaveCriticalRegion();
}
//
// Open the port for the selected process
//
if (pArgs->process_id.val != 0)
{
//proc = Process_Find(pArgs->process_id.val, &irql);
proc = Process_Find(pArgs->process_id.val, NULL);
if (proc && (proc != PROCESS_TERMINATED))
{
KIRQL irql2;
KeRaiseIrql(APC_LEVEL, &irql2);
ExAcquireResourceExclusiveLite(proc->ipc_lock, TRUE);
Process_AddPath(proc, &proc->open_ipc_paths, NULL, FALSE, portName, FALSE);
ExReleaseResourceLite(proc->ipc_lock);
KeLowerIrql(irql2);
}
else
status = STATUS_NOT_FOUND;
//ExReleaseResourceLite(Process_ListLock);
//KeLowerIrql(irql);
}
else
status = STATUS_NOT_FOUND;
//ExReleaseResourceLite(Process_ListLock);
//KeLowerIrql(irql);
return status;
}
@ -476,7 +479,7 @@ _FX BOOLEAN Ipc_Filter_Spooler_Msg(UCHAR uMsg)
WCHAR access_str[24];
swprintf(access_str, L" Msg: %02X", (ULONG)uMsg);
const WCHAR* strings[3] = { L"\\RPC Control\\spoolss", access_str, NULL };
Session_MonitorPutEx(MONITOR_IPC | (filter ? MONITOR_DENY : MONITOR_OPEN), strings, PsGetCurrentProcessId());
Session_MonitorPutEx(MONITOR_IPC | (filter ? MONITOR_DENY : MONITOR_OPEN), strings, NULL, PsGetCurrentProcessId());
}
return filter;

View File

@ -337,6 +337,6 @@ _FX void Log_Debug_Msg(USHORT type, const WCHAR *string1, const WCHAR *string2)
if (Session_MonitorCount) {
const WCHAR* strings[4] = { string1, L" ", string2, NULL };
Session_MonitorPutEx(type | MONITOR_TRACE, strings, PsGetCurrentProcessId());
Session_MonitorPutEx(type | MONITOR_TRACE, strings, NULL, PsGetCurrentProcessId());
}
}

View File

@ -695,6 +695,7 @@ _FX PROCESS *Process_Create(
// initialize trace flags
//
proc->call_trace = Process_GetTraceFlag(proc, L"CallTrace");
proc->file_trace = Process_GetTraceFlag(proc, L"FileTrace");
proc->pipe_trace = Process_GetTraceFlag(proc, L"PipeTrace");
proc->key_trace = Process_GetTraceFlag(proc, L"KeyTrace");

View File

@ -121,6 +121,8 @@ struct _PROCESS {
UCHAR create_console_flag;
ULONG call_trace;
// file-related
PERESOURCE file_lock;

View File

@ -579,7 +579,7 @@ _FX BOOLEAN Session_IsForceDisabled(ULONG SessionId)
_FX void Session_MonitorPut(USHORT type, const WCHAR *name, HANDLE pid)
{
const WCHAR* strings[2] = { name, NULL };
Session_MonitorPutEx(type, strings, pid);
Session_MonitorPutEx(type, strings, NULL, pid);
}
@ -588,7 +588,7 @@ _FX void Session_MonitorPut(USHORT type, const WCHAR *name, HANDLE pid)
//---------------------------------------------------------------------------
_FX void Session_MonitorPutEx(USHORT type, const WCHAR** strings, HANDLE pid)
_FX void Session_MonitorPutEx(USHORT type, const WCHAR** strings, ULONG* lengths, HANDLE pid)
{
SESSION *session;
KIRQL irql;
@ -601,8 +601,8 @@ _FX void Session_MonitorPutEx(USHORT type, const WCHAR** strings, HANDLE pid)
ULONG64 pid64 = (ULONG64)pid;
SIZE_T data_len = 0;
for(const WCHAR** string = strings; *string != NULL; string++)
data_len += wcslen(*string) * sizeof(WCHAR);
for(int i=0; strings[i] != NULL; i++)
data_len += (lengths ? lengths [i] : wcslen(strings[i])) * sizeof(WCHAR);
//[Type 2][PID 8][Data n*2]
SIZE_T entry_size = 2 + 8 + data_len;
@ -613,8 +613,8 @@ _FX void Session_MonitorPutEx(USHORT type, const WCHAR** strings, HANDLE pid)
log_buffer_push_bytes((CHAR*)&pid64, 8, &write_ptr, session->monitor_log);
// join strings seamlessly
for (const WCHAR** string = strings; *string != NULL; string++)
log_buffer_push_bytes((CHAR*)*string, wcslen(*string) * sizeof(WCHAR), &write_ptr, session->monitor_log);
for (int i = 0; strings[i] != NULL; i++)
log_buffer_push_bytes((CHAR*)strings[i], (lengths ? lengths[i] : wcslen(strings[i])) * sizeof(WCHAR), &write_ptr, session->monitor_log);
}
else // this can only happen when the entire buffer is to small to hold this one entry
Log_Msg0(MSG_MONITOR_OVERFLOW);
@ -721,8 +721,6 @@ _FX NTSTATUS Session_Api_MonitorPut(PROCESS *proc, ULONG64 *parms)
_FX NTSTATUS Session_Api_MonitorPut2(PROCESS *proc, ULONG64 *parms)
{
API_MONITOR_PUT2_ARGS *args = (API_MONITOR_PUT2_ARGS *)parms;
UNICODE_STRING objname;
void *object;
USHORT *log_type;
WCHAR *log_data;
WCHAR *name;
@ -745,12 +743,12 @@ _FX NTSTATUS Session_Api_MonitorPut2(PROCESS *proc, ULONG64 *parms)
log_len = args->log_len.val / sizeof(WCHAR);
if (!log_len)
return STATUS_INVALID_PARAMETER;
if (log_len > 256) // truncate as we only have 260 in buffer
log_len = 256;
if (log_len > 1024) // truncate as we only have 1028 in buffer
log_len = 1024;
log_data = args->log_ptr.val;
ProbeForRead(log_data, log_len * sizeof(WCHAR), sizeof(WCHAR));
name = Mem_Alloc(proc->pool, 260 * sizeof(WCHAR)); // todo: should we increase this ?
name = Mem_Alloc(proc->pool, 1028 * sizeof(WCHAR)); // todo: should we increase this ?
if (! name)
return STATUS_INSUFFICIENT_RESOURCES;
@ -765,46 +763,48 @@ _FX NTSTATUS Session_Api_MonitorPut2(PROCESS *proc, ULONG64 *parms)
name[log_len] = L'\0';
status = STATUS_SUCCESS;
object = NULL;
//
// if type is MONITOR_IPC we try to open the object
// to get the name assigned to it at time of creation
//
if (args->check_object_exists.val64 && ((type & MONITOR_TRACE) == 0)) { // do not check objects if this is a trace entry
if ((type & 0xFFF) == MONITOR_IPC) {
UNICODE_STRING objname;
void* object = NULL;
ULONG i;
//
// if type is MONITOR_IPC we try to open the object
// to get the name assigned to it at time of creation
//
RtlInitUnicodeString(&objname, name);
if ((type & 0xFFF) == MONITOR_IPC) {
for (i = 0; Session_ObjectTypes[i]; ++i) {
ULONG i;
// ObReferenceObjectByName needs a non-zero ObjectType
// so we have to keep going through all possible object
// types as long as we get STATUS_OBJECT_TYPE_MISMATCH
RtlInitUnicodeString(&objname, name);
status = ObReferenceObjectByName(
&objname, OBJ_CASE_INSENSITIVE, NULL, 0,
Session_ObjectTypes[i], KernelMode, NULL,
&object);
for (i = 0; Session_ObjectTypes[i]; ++i) {
if (status != STATUS_OBJECT_TYPE_MISMATCH)
break;
// ObReferenceObjectByName needs a non-zero ObjectType
// so we have to keep going through all possible object
// types as long as we get STATUS_OBJECT_TYPE_MISMATCH
status = ObReferenceObjectByName(
&objname, OBJ_CASE_INSENSITIVE, NULL, 0,
Session_ObjectTypes[i], KernelMode, NULL,
&object);
if (status != STATUS_OBJECT_TYPE_MISMATCH)
break;
}
// DbgPrint("IPC Status = %08X Object = %08X for Open <%S>\n", status, object, name);
}
// DbgPrint("IPC Status = %08X Object = %08X for Open <%S>\n", status, object, name);
}
//
// if type is MONITOR_PIPE we try to open the pipe
// to get the name assigned to it at time of creation
//
//
// if type is MONITOR_PIPE we try to open the pipe
// to get the name assigned to it at time of creation
//
if ((type & 0xFFF) == MONITOR_PIPE) {
if ((type & 0xFFF) == MONITOR_PIPE) {
if (args->check_object_exists.val64)
{
OBJECT_ATTRIBUTES objattrs;
IO_STATUS_BLOCK IoStatusBlock;
HANDLE handle;
@ -844,35 +844,36 @@ _FX NTSTATUS Session_Api_MonitorPut2(PROCESS *proc, ULONG64 *parms)
//DbgPrint("PIPE Status3 = %08X Object = %08X for Open <%S>\n", status, object, name);
}
}
//
// if we have an object, get its name from the kernel object
//
//
// if we have an object, get its name from the kernel object
//
if (NT_SUCCESS(status) && object) {
if (NT_SUCCESS(status) && object) {
OBJECT_NAME_INFORMATION *Name;
ULONG NameLength;
OBJECT_NAME_INFORMATION *Name;
ULONG NameLength;
status = Obj_GetNameOrFileName(
proc->pool, object, &Name, &NameLength);
status = Obj_GetNameOrFileName(
proc->pool, object, &Name, &NameLength);
if (NT_SUCCESS(status)) {
if (NT_SUCCESS(status)) {
log_len = Name->Name.Length / sizeof(WCHAR);
if (log_len > 256) // truncate as we only have 260 in buffer
log_len = 256;
wmemcpy(name, Name->Name.Buffer, log_len);
name[log_len] = L'\0';
log_len = Name->Name.Length / sizeof(WCHAR);
if (log_len > 1024) // truncate as we only have 1028 in buffer
log_len = 1024;
wmemcpy(name, Name->Name.Buffer, log_len);
name[log_len] = L'\0';
if (Name != &Obj_Unnamed)
Mem_Free(Name, NameLength);
if (Name != &Obj_Unnamed)
Mem_Free(Name, NameLength);
// DbgPrint("Determined Object Name <%S>\n", name);
// DbgPrint("Determined Object Name <%S>\n", name);
}
ObDereferenceObject(object);
}
ObDereferenceObject(object);
}
} __except (EXCEPTION_EXECUTE_HANDLER) {

View File

@ -44,7 +44,7 @@ BOOLEAN Session_IsForceDisabled(ULONG SessionId);
void Session_MonitorPut(USHORT type, const WCHAR *name, HANDLE pid);
void Session_MonitorPutEx(USHORT type, const WCHAR** strings, HANDLE pid);
void Session_MonitorPutEx(USHORT type, const WCHAR** strings, ULONG* lengths, HANDLE pid);
//---------------------------------------------------------------------------

View File

@ -27,6 +27,7 @@
#include "obj.h"
#include "api.h"
#include "util.h"
#include "session.h"
@ -741,6 +742,7 @@ _FX NTSTATUS Syscall_Api_Invoke(PROCESS *proc, ULONG64 *parms)
__try {
BOOLEAN traced = FALSE;
const ULONG args_len = entry->param_count * sizeof(ULONG_PTR);
#ifdef _WIN64
ProbeForRead(user_args, args_len, sizeof(ULONG_PTR));
@ -774,20 +776,20 @@ _FX NTSTATUS Syscall_Api_Invoke(PROCESS *proc, ULONG64 *parms)
ProbeForRead(user_args, args_len, sizeof(UCHAR));
#endif _WIN64
/*
if (proc->ipc_trace & (TRACE_ALLOW | TRACE_DENY))
{
if (strcmp(entry->name, "AlpcSendWaitReceivePort") == 0)
{
HANDLE hConnection;
hConnection = (HANDLE*)user_args[0];
DbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_ERROR_LEVEL, "SBIE [syscall] p=%06d t=%06d - %s, handle = %X >>>>>>\n",
PsGetCurrentProcessId(), PsGetCurrentThreadId(),
entry->name,
hConnection);
}
}
*/
//if (proc->ipc_trace & (TRACE_ALLOW | TRACE_DENY))
//{
// if (strcmp(entry->name, "AlpcSendWaitReceivePort") == 0)
// {
// HANDLE hConnection;
// hConnection = (HANDLE*)user_args[0];
// DbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_ERROR_LEVEL, "SBIE [syscall] p=%06d t=%06d - %s, handle = %X >>>>>>\n",
// PsGetCurrentProcessId(), PsGetCurrentThreadId(),
// entry->name,
// hConnection);
// }
//}
if (entry->handler1_func) {
@ -802,17 +804,20 @@ _FX NTSTATUS Syscall_Api_Invoke(PROCESS *proc, ULONG64 *parms)
if (proc->ipc_trace & (TRACE_ALLOW | TRACE_DENY))
{
HANDLE hConnection = NULL;
UNICODE_STRING* puStr = NULL;
if ((strcmp(entry->name, "ConnectPort") == 0) ||
(strcmp(entry->name, "AlpcConnectPort") == 0) )
{
HANDLE hConnection = *(HANDLE*)user_args[0];
UNICODE_STRING *puStr = (UNICODE_STRING*)user_args[1];
hConnection = *(HANDLE*)user_args[0];
puStr = (UNICODE_STRING*)user_args[1];
DbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, "SBIE [syscall] p=%06d t=%06d - %s, '%.*S', status = 0x%X, handle = %X\n",
PsGetCurrentProcessId(), PsGetCurrentThreadId(),
entry->name,
(puStr->Length / 2), puStr->Buffer,
status, hConnection);
//DbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, "SBIE [syscall] p=%06d t=%06d - %s, '%.*S', status = 0x%X, handle = %X\n",
// PsGetCurrentProcessId(), PsGetCurrentThreadId(),
// entry->name,
// (puStr->Length / 2), puStr->Buffer,
// status, hConnection);
//if (puStr && puStr->Buffer && wcsstr(puStr->Buffer, L"\\RPC Control\\LRPC-"))
//{
//int i = 0; // place breakpoint here if you want to debug a particular port
@ -821,17 +826,16 @@ _FX NTSTATUS Syscall_Api_Invoke(PROCESS *proc, ULONG64 *parms)
else if ( (strcmp(entry->name, "AlpcCreatePort") == 0) ||
(strcmp(entry->name, "AlpcConnectPortEx") == 0) )
{
HANDLE hConnection = *(HANDLE*)user_args[0];
hConnection = *(HANDLE*)user_args[0];
POBJECT_ATTRIBUTES pObjectAttributes = (POBJECT_ATTRIBUTES)user_args[1];
UNICODE_STRING *puStr = NULL;
if (pObjectAttributes)
puStr = (UNICODE_STRING*)pObjectAttributes->ObjectName;
DbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, "SBIE [syscall] p=%06d t=%06d - %s, '%.*S', status = 0x%X, handle = %X\n",
PsGetCurrentProcessId(), PsGetCurrentThreadId(),
entry->name,
(puStr->Length / 2), puStr->Buffer,
status, hConnection);
//DbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, "SBIE [syscall] p=%06d t=%06d - %s, '%.*S', status = 0x%X, handle = %X\n",
// PsGetCurrentProcessId(), PsGetCurrentThreadId(),
// entry->name,
// (puStr->Length / 2), puStr->Buffer,
// status, hConnection);
}
else if ((strcmp(entry->name, "ReplyWaitReceivePort") == 0) ||
(strcmp(entry->name, "ReceiveMessagePort") == 0) ||
@ -841,12 +845,37 @@ _FX NTSTATUS Syscall_Api_Invoke(PROCESS *proc, ULONG64 *parms)
// these 2 APIs will generate a lot of output if we don't check status
((status != STATUS_SUCCESS) && ((strcmp(entry->name, "AlpcSendWaitReceivePort") == 0) || (strcmp(entry->name, "RequestWaitReplyPort") == 0))) )
{
HANDLE hConnection = (HANDLE*)user_args[0];
DbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, "SBIE [syscall] p=%06d t=%06d - %s, status = 0x%X, handle = %X\n",
PsGetCurrentProcessId(), PsGetCurrentThreadId(),
entry->name,
status, hConnection);
hConnection = (HANDLE*)user_args[0];
//DbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, "SBIE [syscall] p=%06d t=%06d - %s, status = 0x%X, handle = %X\n",
// PsGetCurrentProcessId(), PsGetCurrentThreadId(),
// entry->name,
// status, hConnection);
}
if (hConnection)
{
WCHAR trace_str[128];
swprintf(trace_str, L"[syscall] t=%06d - %.*S, status = 0x%X, handle = %X; ", //59 chars + entry->name
PsGetCurrentThreadId(),
max(strlen(entry->name), 64), entry->name,
status, hConnection);
const WCHAR* strings[3] = { trace_str, puStr ? puStr->Buffer : NULL, NULL };
ULONG lengths[3] = { wcslen(trace_str), puStr ? puStr->Length / 2 : 0, 0 };
Session_MonitorPutEx(MONITOR_IPC | MONITOR_TRACE, strings, lengths, PsGetCurrentProcessId());
traced = TRUE;
}
}
if (!traced && ((proc->call_trace & TRACE_ALLOW) || ((status != STATUS_SUCCESS) && (proc->call_trace & TRACE_DENY))))
{
WCHAR trace_str[128];
swprintf(trace_str, L"[syscall] t=%06d - %.*S, status = 0x%X", //59 chars + entry->name
PsGetCurrentThreadId(),
max(strlen(entry->name), 64), entry->name,
status);
const WCHAR* strings[2] = { trace_str, NULL };
Session_MonitorPutEx(MONITOR_SYSCALL | MONITOR_TRACE, strings, NULL, PsGetCurrentProcessId());
}
#ifdef _WIN64

View File

@ -37,7 +37,7 @@ static HANDLE Syscall_RestoreTargetHandle(
static NTSTATUS Syscall_CheckObject(
PROCESS *proc, SYSCALL_ENTRY *syscall_entry,
void *OpenedObject, OBJECT_HANDLE_INFORMATION *HandleInfo);
void *OpenedObject, OBJECT_HANDLE_INFORMATION *HandleInfo, PUNICODE_STRING puName);
static NTSTATUS Syscall_DuplicateHandle_2(
HANDLE TargetProcessHandle, HANDLE TargetHandle,
@ -178,7 +178,7 @@ _FX HANDLE Syscall_RestoreTargetHandle(
_FX NTSTATUS Syscall_CheckObject(
PROCESS *proc, SYSCALL_ENTRY *syscall_entry,
void *OpenedObject, OBJECT_HANDLE_INFORMATION *HandleInfo)
void *OpenedObject, OBJECT_HANDLE_INFORMATION *HandleInfo, PUNICODE_STRING puName)
{
OBJECT_NAME_INFORMATION *Name;
ULONG NameLength;
@ -194,9 +194,12 @@ _FX NTSTATUS Syscall_CheckObject(
if ((status != STATUS_SUCCESS)
&& (status != STATUS_BAD_INITIAL_PC)) {
if (puName == NULL && Name != NULL && Name->Name.Length != 0)
puName = &Name->Name;
WCHAR msg[256];
swprintf(msg, L"%S (%08X) access=%08X initialized=%d", syscall_entry->name, status, HandleInfo->GrantedAccess, proc->initialized);
Log_Msg_Process(MSG_2101, msg, Name != NULL ? Name->Name.Buffer : L"Unnamed object", -1, proc->pid);
Log_Msg_Process(MSG_2101, msg, puName != NULL ? puName->Buffer : L"Unnamed object", -1, proc->pid);
}
if (Name != &Obj_Unnamed)
@ -289,12 +292,20 @@ _FX NTSTATUS Syscall_OpenHandle(
if (NT_SUCCESS(status)) {
PUNICODE_STRING puName = NULL;
if ((strcmp(syscall_entry->name, "ConnectPort") == 0) ||
(strcmp(syscall_entry->name, "AlpcConnectPort") == 0))
{
puName = (UNICODE_STRING*)user_args[1];
}
//
// check the access that was granted to the object
//
status = Syscall_CheckObject(
proc, syscall_entry, OpenedObject, &HandleInfo);
proc, syscall_entry, OpenedObject, &HandleInfo, puName);
ObDereferenceObject(OpenedObject);
@ -633,7 +644,7 @@ _FX NTSTATUS Syscall_DuplicateHandle_2(
//
status = Syscall_CheckObject(
proc, syscall_entry, OpenedObject, &HandleInfo);
proc, syscall_entry, OpenedObject, &HandleInfo, NULL);
} else if ( TypeLength == 5 * sizeof(WCHAR)
&& wmemcmp(TypeBuffer, L"Token", 5) == 0) {

View File

@ -93,6 +93,7 @@ MSG_HEADER *EpMapperServer::EpmapperGetPortNameHandler(MSG_HEADER *msg)
return SHORT_REPLY(E_OUTOFMEMORY);
rpl->h.status = STATUS_NOT_FOUND;
rpl->wszPortName[0] = L'\0';
if (pwszServiceName != NULL) {
@ -170,12 +171,18 @@ MSG_HEADER *EpMapperServer::EpmapperGetPortNameHandler(MSG_HEADER *msg)
if (rpl->h.status == STATUS_SUCCESS)
{
//
// Note: it seams that chrome.exe resolves GAME_CONFIG_STORE_PORT in one process and accesses from an other
// so since here we onlyonly a fre non critical ports we will use PID 0 to open it gloally
// instead of only for the one process. Todo: make it per sandbox instead
//
// Param 1 is dynamic port name (e.g. "LRPC-f760d5b40689a98168"), WCHAR[DYNAMIC_PORT_NAME_CHARS]
// Param 2 is the process PID for which to open the port
// Param 2 is the process PID for which to open the port, can be 0 when port is special
// Param 3 is the port type/identifier, can be -1 indicating non special port
rpl->h.status = SbieApi_CallThree(API_OPEN_DYNAMIC_PORT,
(ULONG_PTR)rpl->wszPortName,
(ULONG_PTR)idProcess,
(ULONG_PTR)0,
(ULONG_PTR)req->portType);
}

View File

@ -1853,7 +1853,7 @@ bool CSbieAPI::IsMonitoring()
bool CSbieAPI::GetMonitor()
{
const int max_len = 256; // versions prioir to 5.44.1 check for max_len <= 256 increase this later
const int max_len = 1024;
USHORT type;
ULONG64 pid;
@ -1943,6 +1943,7 @@ QString CResLogEntry::GetTypeStr() const
{
switch (m_Type.Type)
{
case MONITOR_SYSCALL: return "SysCall";
case MONITOR_PIPE: return "Pipe";
case MONITOR_IPC: return "Ipc";
case MONITOR_WINCLASS: return "WinClass";

View File

@ -15,7 +15,7 @@
#define VERSION_MJR 0
#define VERSION_MIN 5
#define VERSION_REV 4
#define VERSION_UPD 2
#define VERSION_UPD 3
//#include "../QSbieAPI/SbieAPI.h"

View File

@ -202,15 +202,15 @@
<message>
<location filename="Windows/OptionsWindow.cpp" line="1894"/>
<source>Please enter an auto exec command</source>
<translation>Bitte geben Sie einen Autoausführen-Kommando ein</translation>
<translation>Bitte geben Sie einen Autoausführen-Kommndo ein</translation>
</message>
<message>
<location filename="Windows/OptionsWindow.cpp" line="2095"/>
<source>This template is enabled globally. To configure it, use the global options.</source>
<translation>Diese Vorlage ist global aktiv, um sie zu konfigurieren müssen die globalen Optionen genutzt werden.</translation>
<translation>Diese Vorlage ist global aktiv, um sie zu konfigueren müssen die globalen Optionen genutzt werden.</translation>
</message>
<message>
<source>Please select group first.</source>
<source>Please sellect group first.</source>
<translation type="vanished">Bitte zuvor eine Gruppe auswählen.</translation>
</message>
<message>
@ -291,7 +291,7 @@
</message>
<message>
<source>This template is enabled globally to configure it use the global options.</source>
<translation type="vanished">Diese Vorlage ist global aktiv, um sie zu konfigurieren müssen die globalen Optionen genutzt werden.</translation>
<translation type="vanished">Diese Vorlage ist global aktiv, um sie zu konfigueren müssen die globalen Optionen genutzt werden.</translation>
</message>
</context>
<context>
@ -305,7 +305,7 @@
<location filename="Windows/PopUpWindow.h" line="47"/>
<source>Visit %1 for a detailed explanation.</source>
<oldsource>Visit %1 for a detailes explenation.</oldsource>
<translation>%1 besuchen für eine detaillierte Erklärung.</translation>
<translation>%1 besuchen für eine detailierte Erklärung.</translation>
</message>
<message>
<location filename="Windows/PopUpWindow.h" line="54"/>
@ -458,7 +458,7 @@
<location filename="Windows/PopUpWindow.cpp" line="127"/>
<source>Do you want to allow the print spooler to write outside the sandbox for %1 (%2)?</source>
<translatorcomment>Kept &apos;print spooler&apos; in breakets to allow easier online lookup</translatorcomment>
<translation>Möchten Sie der Druckerwarteschlange (print spooler) erlauben außerhalb der Sandbox für %1 (%2) zu schreiben?</translation>
<translation>Möchten Sie der Druckewarteschlange (print spooler) erlauben außerhalb der Sandbox für %1 (%2) zu schreiben?</translation>
</message>
<message>
<location filename="Windows/PopUpWindow.cpp" line="220"/>
@ -611,7 +611,7 @@ Vollständiger Pfad: %4</translation>
<location filename="SbiePlusAPI.cpp" line="110"/>
<source>Net Share</source>
<translatorcomment>Kept original for lack of good German wording</translatorcomment>
<translation>Netzwerkfreigabe (Net share)</translation>
<translation>Netzwerfreigabe (Net share)</translation>
</message>
<message>
<location filename="SbiePlusAPI.cpp" line="112"/>
@ -677,7 +677,7 @@ Vollständiger Pfad: %4</translation>
<location filename="SandMan.cpp" line="216"/>
<location filename="SandMan.cpp" line="345"/>
<source>Disable Forced Programs</source>
<translation>Deaktiviere erzwungene Programme</translation>
<translation>Deaktivere erzwungene Programme</translation>
</message>
<message>
<location filename="SandMan.cpp" line="341"/>
@ -827,17 +827,18 @@ Vollständiger Pfad: %4</translation>
<message>
<location filename="SandMan.cpp" line="392"/>
<source>Edit ini file</source>
<translation>.ini-Datei bearbeiten</translation>
<translatorcomment>Freedom to ini being all caps</translatorcomment>
<translation>INI-Datei bearbeiten</translation>
</message>
<message>
<location filename="SandMan.cpp" line="393"/>
<source>Reload ini file</source>
<translation>.ini-Datei neu laden</translation>
<translation>INI-Datei neuladen</translation>
</message>
<message>
<location filename="SandMan.cpp" line="395"/>
<source>Resource Logging</source>
<translation>Ressourcenprotokollierung</translation>
<translation>Resourcenprotokollierung</translation>
</message>
<message>
<location filename="SandMan.cpp" line="398"/>
@ -893,7 +894,7 @@ Vollständiger Pfad: %4</translation>
<message>
<location filename="SandMan.cpp" line="500"/>
<source>Sandboxie-Plus was running in portable mode, now it has to clean up the created services. This will prompt for administrative privileges.</source>
<translation>Sandboxie-Plus wurde im portablen Modus betrieben, nun müssen die erzeugten Dienste bereinigt werden, was Adminrechte benötigt.</translation>
<translation>Sandboxie-Plus wurde im portablen Modus betrieben, nun müssen die erzeugten Dienste bereinigt werden, was administrative Rechte benötigt.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="543"/>
@ -940,7 +941,7 @@ Vollständiger Pfad: %4</translation>
<message>
<location filename="SandMan.cpp" line="1002"/>
<source>Sandboxie-Plus was started in portable mode and it needs to create necessary services. This will prompt for administrative privileges.</source>
<translation>Sandboxie-Plus wurde im portablen Modus gestartet, nun müssen die benötigten Dienste erzeugt werden, was Adminrechte benötigt.</translation>
<translation>Sandboxie-Plus wurde im portablen Modus getartet, nun müssen die benötigten Dienste erzeugt werden, was administrative Rechte benötigt.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1201"/>
@ -961,8 +962,8 @@ Vollständiger Pfad: %4</translation>
<location filename="SandMan.cpp" line="1295"/>
<source>To use API logging you must first set up the LogApiDll from https://github.com/sandboxie-plus/LogApiDll with one or more sandboxes.
Please download the latest release and set it up with the Sandboxie.ini as instructed in the README.md of the project.</source>
<translation>Um die API Protokollierung zu nutzen, muss die LogApiDll von https://github.com/sandboxie-plus/LogApiDll mit einer oder mehrerer Box(en) eingerichtet werden.
Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der README.md des Projekts in der Sandboxie.ini einrichten.</translation>
<translation>Um die API Protokollierung zu nutzen, muss die LogApiDll von https://github.com/sandboxie-plus/LogApiDll mit einer oder mehrerer Box(en) eingereichten werden.
Bitte die neute Version herunterladen und entsprechend der Anweisungen in der README.md des Projekts einrichten.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1383"/>
@ -972,11 +973,11 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<message>
<location filename="SandMan.cpp" line="1755"/>
<source>&lt;p&gt;Sandboxie-Plus is an open source continuation of Sandboxie.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Visit &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; for more information.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Icons from &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Sandboxie-Plus ist eine OpenSource-Fortsetzung von Sandboxie.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Besuche &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; für weitere Informationen.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Icons von &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</translation>
<translation>p&gt;Sandboxie-Plus ist eine OpenSource-Fortsetzung von Sandboxie.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Besuche &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; für weitere Informationen.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Icons von &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>Admin rights required.</source>
<translation type="vanished">Adminrechte benötigt.</translation>
<translation type="vanished">Administrativerechte benötigt.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1386"/>
@ -1003,7 +1004,7 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<message>
<location filename="SandMan.cpp" line="1391"/>
<source>Failed to copy configuration from sandbox %1: %2</source>
<translation>Fehler beim Kopieren der Konfiguration von Sandbox %1: %2</translation>
<translation>Fehler beim Kopieren der Konfiguartion von Sandbox %1: %2</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1392"/>
@ -1016,7 +1017,7 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<translation>Fehler beim Löschen der Sandbox %1: %2</translation>
</message>
<message>
<source>The sandbox name can not be longer than 32 characters.</source>
<source>The sandbox name can not be longer than 32 charakters.</source>
<translation type="vanished">Der Name der Sandbox darf nicht länger als 32 Zeichen sein.</translation>
</message>
<message>
@ -1062,7 +1063,7 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<message>
<location filename="SandMan.cpp" line="1403"/>
<source>This Snapshot operation can not be performed while processes are still running in the box.</source>
<translation>Der Schnappschuss kann nicht erstellt werden, während Prozesse in dieser Box laufen.</translation>
<translation>Dieser Schnappschussvorgang kann nicht durchgeführt werden, während Prozesse in dieser Box laufen.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1404"/>
@ -1116,7 +1117,7 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<message>
<location filename="SandMan.cpp" line="1603"/>
<source>Don&apos;t show this announcement in the future.</source>
<translation>Diese Ankündigung zukünftig nicht mehr zeigen.</translation>
<translation>Diese Ankündigung zukünfitg nicht mehr zeigen.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1641"/>
@ -1131,11 +1132,11 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<message>
<location filename="SandMan.cpp" line="1728"/>
<source>&lt;p&gt;New Sandboxie-Plus has been downloaded to the following location:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;%2&quot;&gt;%1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Do you want to begin the installation? If any programs are running sandboxed, they will be terminated.&lt;/p&gt;</source>
<translation>&lt;p&gt;Neue Version von Sandboxie-Plus wurde heruntergeladen zu:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;%2&quot;&gt;%1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Möchten Sie mit der Installation beginnen? Falls Programme in einer Sandbox laufen, werden diese beendet.&lt;/p&gt;</translation>
<translation>&lt;p&gt;Neue Verion von Sandboxie-Plus wurde heruntergeladen zu:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;%2&quot;&gt;%1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Möchten Sie mit der Installation beginnen? Falls Programme in einer Sandbox laufen, werden diese beendet.&lt;/p&gt;</translation>
</message>
<message>
<source>Sandboxie-Plus was running in portable mode, now it has to clean up the created services, this will prompt for administrative privileges.</source>
<translation type="vanished">Sandboxie-Plus wurde im portablen Modus betrieben, nun müssen die erzeugten Dienste bereinigt werden, was Adminrechte benötigt.</translation>
<translation type="vanished">Sandboxie-Plus wurde im portablen Modus betrieben, nun müssen die erzeugten Dienste bereinigt werden, was administrative Rechte benötigt.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="501"/>
@ -1160,7 +1161,7 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
</message>
<message>
<source>Failed to start required sandboxie components</source>
<translation type="vanished">Fehlschlag beim Starten der benötigten Sandboxiekomponenten</translation>
<translation type="vanished">Fehlschalg beim Starten der benötigten Sandboxiekomponenten</translation>
</message>
<message>
<location filename="SandMan.cpp" line="547"/>
@ -1195,7 +1196,7 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<message>
<location filename="SandMan.cpp" line="689"/>
<source>Loaded Config: %1</source>
<translation>Geladene Konfiguration: %1</translation>
<translation>Geladene Kofiguration: %1</translation>
</message>
<message>
<source> - Driver NOT connected</source>
@ -1225,7 +1226,7 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<message>
<location filename="SandMan.cpp" line="936"/>
<source>Only Administrators can change the config.</source>
<translation>Nur Administratoren können Änderungen an der Konfiguration vornehmen.</translation>
<translation>Nur Administratoren können Änderungen n der Kofiguration vornehmen.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="946"/>
@ -1242,8 +1243,8 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<translation type="vanished">Bitte Dauer eingeben, in der erzwungene Programme deaktiviert sind.</translation>
</message>
<message>
<source>Sandboxie-Plus was started in portable mode and it needs to create necessary services, this will prompt for administrative privileges.</source>
<translation type="vanished">Sandboxie-Plus wurde im portablen Modus gestartet, nun müssen die benötigten Dienste erzeugt werden, was Adminrechte benötigt.</translation>
<source>Sandboxie-Plus was started in portable mode and it needs to create nececery services, this will prompt for administrative privileges.</source>
<translation type="vanished">Sandboxie-Plus wurde im portablen Modus getartet, nun müssen die benötigten Dienste erzeugt werden, was administrative Rechte benötigt.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1040"/>
@ -1256,7 +1257,7 @@ Bitte die neuste Version herunterladen und entsprechend der Anweisungen in der R
<translation>Führe Wartungsvorgang aus, bitte warten...</translation>
</message>
<message>
<source>The changes will be applied automatically as soon as the editor is closed.</source>
<source>The changes will be applyed automatically as soon as the editor is closed.</source>
<translation type="vanished">Die Änderungen werden automatisch angewendet, sobald der Editor geschlossen wird.</translation>
</message>
<message>
@ -1268,7 +1269,7 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<message>
<location filename="SandMan.cpp" line="1385"/>
<source>Administrator rights are required for this operation.</source>
<translation>Für diesen Vorgang werden Adminrechte benötigt.</translation>
<translation>Für dieen Vorgang werden administrative Rechte benötigt.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1387"/>
@ -1328,7 +1329,7 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
</message>
<message>
<source>Don&apos;t show this announcement in future.</source>
<translation type="vanished">Diese Ankündigung zukünftig nicht mehr zeigen.</translation>
<translation type="vanished">Diese Ankündigung zukünfitg nicht mehr zeigen.</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1629"/>
@ -1346,7 +1347,7 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<translation>&lt;p&gt;Möchten Sie die &lt;a href=&quot;%1&quot;&gt;Downloadseite&lt;/a&gt; besuchen?&lt;/p&gt;</translation>
</message>
<message>
<source>Ignore this update, notify me about the next one.</source>
<source>Ignore this update, notify me anout the next one.</source>
<translation type="vanished">Dieses Update ignorieren, über das nächste Update benachrichtigen.</translation>
</message>
<message>
@ -1365,7 +1366,7 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
</message>
<message>
<source>&lt;p&gt;New Sandboxie-Plus has been downloaded to the following location:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;%2&quot;&gt;%1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Do you want to begin the installation. If any programs are running sandboxed, they will be terminated.&lt;/p&gt;</source>
<translation type="vanished">&lt;p&gt;Neue Version von Sandboxie-Plus wurde heruntergeladen zu:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;%2&quot;&gt;%1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Möchten Sie mit der Installation beginnen? Falls Programme in einer Sandbox laufen, werden diese beendet.&lt;/p&gt;</translation>
<translation type="vanished">&lt;p&gt;Neue Verion von Sandboxie-Plus wurde heruntergeladen zu:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;%2&quot;&gt;%1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Möchten Sie mit der Installation beginnen? Falls Programme in einer Sandbox laufen, werden diese beendet.&lt;/p&gt;</translation>
</message>
<message>
<location filename="SandMan.cpp" line="1750"/>
@ -1374,14 +1375,14 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
</message>
<message>
<source>&lt;p&gt;Sandboxie-Plus is an open source continuation of the well known Sandboxie.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Visit &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; for more information.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Icons from &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</source>
<translation type="vanished">p&gt;Sandboxie-Plus ist eine OpenSource-Fortsetzung von Sandboxie.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Visit &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; für weitere Informationen.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Icons von &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</translation>
<translation type="vanished">p&gt;Sandboxie-Plus ist eine OpenSource-Fortsetzungde sehr bekannten Sandboxie.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Visit &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; für weitere Informationen.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Icons von &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</translation>
</message>
</context>
<context>
<name>CSbieAPI</name>
<message>
<source>Failed to copy configuration from sandbox %1</source>
<translation type="vanished">Fehler beim Kopieren der Konfiguration von Sandbox %1</translation>
<translation type="vanished">Fehler beim Kopieren der Konfiguartion von Sandbox %1</translation>
</message>
</context>
<context>
@ -1414,7 +1415,7 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<message>
<location filename="Models/SbieModel.cpp" line="418"/>
<source>Path / Command Line</source>
<translation>Pfad / Kommandozeile</translation>
<translation>Kommandozeile</translation>
</message>
<message>
<source>Path</source>
@ -1610,7 +1611,7 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<message>
<location filename="Views/SbieView.cpp" line="635"/>
<source>This box does not have Internet restrictions in place, do you want to enable them?</source>
<translation>Diese Sandbox hat keine Internetbeschränkungen, möchten Sie diese aktivieren?</translation>
<translation>Diese Sandbox hat keine Internetschränkungen, möchten Sie diese aktivieren?</translation>
</message>
<message>
<source>Suspend</source>
@ -1631,7 +1632,7 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<location filename="Views/SbieView.cpp" line="172"/>
<source> Registry root: %1
</source>
<translation> Registry-Quelle: %1
<translation> Registryquelle: %1
</translation>
</message>
<message>
@ -1718,13 +1719,13 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<message>
<location filename="Windows/SettingsWindow.cpp" line="341"/>
<source>Please enter the new configuration password.</source>
<translation>Bitte ein Passwort für die neue Konfiguration eingeben.</translation>
<translation>Bitte ein Passwort für die neue Konfguration eingeben.</translation>
</message>
<message>
<location filename="Windows/SettingsWindow.cpp" line="345"/>
<source>Please re-enter the new configuration password.</source>
<oldsource>Please re enter the new configuration password.</oldsource>
<translation>Bitte das neue Konfigurationspasswort wiederholen.</translation>
<translation>Bitte das neue Konfiguartionspasswort wiederholen.</translation>
</message>
<message>
<location filename="Windows/SettingsWindow.cpp" line="350"/>
@ -1806,7 +1807,7 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<message>
<location filename="Forms/NewBoxWindow.ui" line="60"/>
<source>Select restriction/isolation template:</source>
<translation>Restriktions- oder Isolationsvorlage auswählen:</translation>
<translation>Restriktions-/Isolationsvorlage auswählen:</translation>
</message>
<message>
<location filename="Forms/NewBoxWindow.ui" line="67"/>
@ -1876,12 +1877,12 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<message>
<location filename="Forms/OptionsWindow.ui" line="110"/>
<source>Drop rights from Administrators and Power Users groups</source>
<translation>Die Rechte der Administratoren und Hauptbenutzergruppe einschränken</translation>
<translation>Die Rechte der Administratoren und Hauptbenuztergruppe einschränken</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="127"/>
<source>Prevent change to network and firewall parameters</source>
<translation>Verhindere Änderungen an den Netzwerk- und Firewall-Einstellungen</translation>
<translation>Verhindere Änderungen an den Netzwerk- und Firewalleinstellungen</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="267"/>
@ -2023,13 +2024,13 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="694"/>
<source>Programs entered here, or programs started from entered locations, will be put in this sandbox automatically, unless they are explicitly started in another sandbox.</source>
<source>Programs entered here, or programs started from entered locations, will be put in this sandbox automatically, unless thay are explicitly started in another sandbox.</source>
<translation>Programme die hier gelistet sind oder von den angegeben Ordnern gestartet werden, werden automatisch in dieser Sandbox ausgeführt, solange sie nicht explizit in einer anderen Sandbox gestartet werden.</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="707"/>
<source>Stop Behaviour</source>
<translation>Stopverhalten</translation>
<translation>Stopp Verhalten</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="715"/>
@ -2090,7 +2091,7 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<message>
<location filename="Forms/OptionsWindow.ui" line="450"/>
<source>Here you can specify programs and/or services that are to be started automatically in the sandbox when it is activated</source>
<translation>Hier können Sie Programme und/oder Dienste angeben, welche automatisch in der Sandbox gestartet werden, wenn diese aktiviert wird</translation>
<translation>Hier können Sie Programme und/oder Dienste angeben, welche automatisch in der Sandbox gestarted werden, wenn diese aktiviert wird</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="537"/>
@ -2102,9 +2103,9 @@ Bitte die neute Version herunterladen und entsprechend der Anweisungen in der RE
<source>Lingering programs will be automatically terminated if they are still running after all other processes have been terminated.
If leader processes are defined, all others are treated as lingering processes.</source>
<translation>Verweilende Programme werden automatisch beendet, wenn diese noch laufen, nachdem alle anderen Prozesse bereits beendet wurden.
<translation>Verbelibende Programme werden automatisch beendet, wenn diese noch laufen, nachdem alle anderen Prozesse bereits beendet wurden.
Falls primäre Programme/Prozesse definiert wurden, werden alle anderen als verweilende Prozesse behandelt.</translation>
Falls primäre Programme/Prozessse definiert wurden, werden alle anderen als verweilende Prozesse behandelt.</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="788"/>
@ -2164,7 +2165,7 @@ Falls primäre Programme/Prozesse definiert wurden, werden alle anderen als verw
<message>
<location filename="Forms/OptionsWindow.ui" line="961"/>
<source>Resource Access</source>
<translation>Ressourcenzugriff</translation>
<translation>Resourcenzugriff</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="978"/>
@ -2218,7 +2219,7 @@ Falls primäre Programme/Prozesse definiert wurden, werden alle anderen als verw
Note that all Close...=!&lt;program&gt;,... exclusions have the same limitations.
For files access you can use &apos;Direct All&apos; instead to make it apply to all programs.</source>
<translatorcomment>Translated close to what is written in the source</translatorcomment>
<translation>Konfigurieren, welche Prozesse auf welche Ressourcen zugreifen können. Doppelklick um einen Eintrag zu bearbeiten.
<translation>Konfigurieren, welche Prozesse auf welche Resourcen zugreifen können. Doppelklick um einen Eintrag zu bearbeiten.
&apos;Direkter&apos; Datei und Schlüsselzugriff trifft nur auf Programmdateien zu, die sich außerhalb der Sandbox befinden.
Beachte, dass alle Programme schließen...=!&lt;Programm&gt;,... Ausnahmen die gleichen Beschränkungen haben.
Zum Dateizugriff können Sie &apos;Direkt Alle&apos; verwenden um für alle Programme zu zu treffen.</translation>
@ -2245,8 +2246,8 @@ Zum Dateizugriff können Sie &apos;Direkt Alle&apos; verwenden um für alle Prog
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1207"/>
<source>Enable Immediate Recovery prompt to be able to recover files as soon as they are created.</source>
<translation>Aktivere Sofortwiederherstellungsabfrage, um alle Dateien sofort wiederherstellen zu können sobald diese erzeugt werden.</translation>
<source>Enable Immediate Recovery prompt to be able to recover files as soon as thay are created.</source>
<translation>Aktivere Sofortwiederhertellungsabfrage, um alle Dateien sofort wiederherstellen zu können sobald diese erzeugt werden.</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1251"/>
@ -2286,7 +2287,7 @@ Zum Dateizugriff können Sie &apos;Direkt Alle&apos; verwenden um für alle Prog
<message>
<location filename="Forms/OptionsWindow.ui" line="1326"/>
<source>Start the sandboxed RpcSs as a SYSTEM process (breaks some compatibility)</source>
<translation>Starte den sandgeboxten RpcSs als DIENST-Prozess (beeinträchtigt die Kompatibilität)</translation>
<translation>Starte den sandgeboxted RpcSs als DIENST-Prozess (beinträchtigt etwas Kompatibilität)</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1424"/>
@ -2296,7 +2297,7 @@ Zum Dateizugriff können Sie &apos;Direkt Alle&apos; verwenden um für alle Prog
<message>
<location filename="Forms/OptionsWindow.ui" line="1306"/>
<source>Limit access to the emulated service control manager to privileged processes</source>
<translation>Beschränke Zugriff auf emulierte Dienstkontrollmanager auf privilegierte Prozesse</translation>
<translation>Beschränke Zugriff zu emulierten Dientkontrollmanagern auf priviligierte Prozesse</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1383"/>
@ -2321,7 +2322,7 @@ Zum Dateizugriff können Sie &apos;Direkt Alle&apos; verwenden um für alle Prog
<location filename="Forms/OptionsWindow.ui" line="1339"/>
<location filename="Forms/OptionsWindow.ui" line="1453"/>
<source>Protect the sandbox integrity itself</source>
<translation>Die Sandboxintegrität selbst schützen</translation>
<translation>Die Sandboxintegrität sebst schützen</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1342"/>
@ -2336,7 +2337,7 @@ Zum Dateizugriff können Sie &apos;Direkt Alle&apos; verwenden um für alle Prog
<message>
<location filename="Forms/OptionsWindow.ui" line="1417"/>
<source>Protect sandboxed SYSTEM processes from unprivileged unsandboxed processes</source>
<translation>Schütze sandgeboxte SYSTEM-Prozesse vor unprivilegierten nicht sandgeboxten Prozessen</translation>
<translation>Schütze sandgeboxte SYSTEM-Prozesse von unpriviligierten nicht sandgeboxten Prozessen</translation>
</message>
<message>
<source>Sandbox Isolation</source>
@ -2355,7 +2356,7 @@ Zum Dateizugriff können Sie &apos;Direkt Alle&apos; verwenden um für alle Prog
<message>
<location filename="Forms/OptionsWindow.ui" line="1548"/>
<source>Hide host processes from processes running in the sandbox.</source>
<translation>Verstecke Host-Prozesse vor Prozessen in der Sandbox.</translation>
<translation>Verstecke Hostprozesse vor Prozessen in der Sandbox.</translation>
</message>
<message>
<source>Remove Process</source>
@ -2374,7 +2375,7 @@ Zum Dateizugriff können Sie &apos;Direkt Alle&apos; verwenden um für alle Prog
<message>
<location filename="Forms/OptionsWindow.ui" line="1585"/>
<source>Restrict Resource Access monitor to administrators only</source>
<translation>Beschränke den Ressourcenzugriffsmonitor auf Administratoren</translation>
<translation>Beschränke den Resourcenzugriffsmonitor auf Administratoren</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1592"/>
@ -2391,9 +2392,9 @@ Zum Dateizugriff können Sie &apos;Direkt Alle&apos; verwenden um für alle Prog
<source>Add user accounts and user groups to the list below to limit use of the sandbox to only those accounts. If the list is empty, the sandbox can be used by all user accounts.
Note: Forced Programs and Force Folders settings for a sandbox do not apply to user accounts which cannot use the sandbox.</source>
<translation>Füge Nutzerkonten und -gruppen der Liste hinzu, um die Benutzung der Sandbox auf diese Konten zu beschränken.Falls die Liste leer ist, kann die Sandbox von allen Konten genutzt werden.
<translation>Füge Nutzerkonten und Nuztergruppenzu der Liste hinzu, um die Benuztzung der Sandbox auf diese Konten zu beschränken.Falls die Liste leer ist, kann die Sandbox von allen Konten genutzt werden.
Notiz: Erzwungene Programme und Ordner für eine Sandbox finden keine Anwendung auf Konten, die diese Sandbox nicht nutzen können.</translation>
Notiz: Erzwungene Programme und Ordnerfür eine Sandbox finden keine Anwendung auf Konten, die diese Sandbox nicht nuten können.</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1635"/>
@ -2415,7 +2416,7 @@ You can customize the logging using the ini by specifying
&quot;D&quot; - Denied accesses
&quot;I&quot; - Ignore access requests
instead of &quot;*&quot;.</source>
<translation>Protokolliere jeden Zugriffsevent, wie er durch den Treiber gesehen wird, im Ressourcenzugriffsprotokoll.
<translation>Protokolliere jednen Zugriffsevent, wie er durhc den Treiber gesehen wird, im Resourcenzugriffsprotokoll.
Diese Optionen setzen die Eventmaske auf &quot;*&quot; - Alle Zugriffsevents
Sie können die Protokollierung in der INI anpassen in den Sie wie folgt wählen
@ -2482,7 +2483,7 @@ an Stelle von &quot;*&quot;.</translation>
<message>
<location filename="Forms/OptionsWindow.ui" line="1751"/>
<source>&lt;- for this one the above does not apply</source>
<translation>&lt;- für dieses findet das Obige keine Anwendung</translation>
<translation>&lt;- für dieses findet das Obrige keine Anwendung</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1767"/>
@ -2492,7 +2493,7 @@ an Stelle von &quot;*&quot;.</translation>
<message>
<location filename="Forms/OptionsWindow.ui" line="1810"/>
<source>WARNING, these options can disable core security guarantees and break sandbox security!!!</source>
<translation>WARNUNG, diese Optionen können Kernsicherheitsgarantien deaktivieren und die Sandboxsicherheit zerstören!!!</translation>
<translation>WARNUNG, diese Optionen können Kernsicherheitsgarantien deaktivieren und die Sandboxsichheit zerstören!!!</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1820"/>
@ -2522,7 +2523,7 @@ an Stelle von &quot;*&quot;.</translation>
<message>
<location filename="Forms/OptionsWindow.ui" line="1885"/>
<source>This list contains a large amount of sandbox compatibility enhancing templates</source>
<translation>Diese Liste enthält eine große Menge an Vorlange, welche die Kompalität der Sandbox verbessern</translation>
<translation>Diese Liste enthält eine große Menge an Sandboxkompatibilitätsverbesserungsvorlagen</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1898"/>
@ -2576,7 +2577,7 @@ an Stelle von &quot;*&quot;.</translation>
<message>
<location filename="Forms/RecoveryWindow.ui" line="54"/>
<source>Refresh</source>
<translation>Aktualisieren</translation>
<translation>Aktualsieren</translation>
</message>
<message>
<location filename="Forms/RecoveryWindow.ui" line="74"/>
@ -2664,7 +2665,7 @@ an Stelle von &quot;*&quot;.</translation>
<message>
<location filename="Forms/SettingsWindow.ui" line="183"/>
<source>Open urls from this ui sandboxed</source>
<translation>Öffne URLs aus diesem Fenster in einer Sandbox</translation>
<translation>Öffne URLs aus diesem Fenter in einer Sandbox</translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="203"/>
@ -2711,7 +2712,7 @@ an Stelle von &quot;*&quot;.</translation>
</message>
<message>
<source>Sandbox registry root: </source>
<translation type="vanished">Sandbox Registry-Quelle: </translation>
<translation type="vanished">Sandbox Registy-Quelle: </translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="310"/>
@ -2772,7 +2773,7 @@ an Stelle von &quot;*&quot;.</translation>
<message>
<location filename="Forms/SettingsWindow.ui" line="438"/>
<source>When any of the following programs is launched outside any sandbox, Sandboxie will issue message SBIE1301.</source>
<translation>Wenn eines der folgenden Programme außerhalb einer Sandbox gestartet wird, wird Sandboxie die Meldung SBIE1301 ausgeben.</translation>
<translation>Wenn eines der folgenden Programme außerhalb einer Sandbox gestarten wird,wird Sandboxie die Meldung SBIE1301 ausgeben.</translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="448"/>
@ -2797,7 +2798,7 @@ an Stelle von &quot;*&quot;.</translation>
<message>
<location filename="Forms/SettingsWindow.ui" line="480"/>
<source>In the future, don&apos;t check software compatibility</source>
<translation>Zukünftig nicht auf Softwarekompatibilität prüfen</translation>
<translation>Zukünfig nicht auf Softwarekompatibilität prüfen</translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="487"/>
@ -2807,12 +2808,12 @@ an Stelle von &quot;*&quot;.</translation>
<message>
<location filename="Forms/SettingsWindow.ui" line="494"/>
<source>Disable</source>
<translation>Deaktivieren</translation>
<translation>Deaktiveren</translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="523"/>
<source>Sandboxie has detected the following software applications in your system. Click OK to apply configuration settings, which will improve compatibility with these applications. These configuration settings will have effect in all existing sandboxes and in any new sandboxes.</source>
<translation>Sandboxie hat die folgenden Anwendungen auf dem System gefunden. OK klicken zur Anwendung der Konfigurationseinstellungen, welche die Softwarekompatibilität mit diesen Anwendungen verbessert. Diese Konfigurationseinstellungen haben Auswirkungen auf alle existierenden und neuen Sandboxen.</translation>
<translation>Sandboxie hat die folgenden Anwendungen auf dem System gefunden. OK klicken zur Anwendung der Konfigurationseinstellungen, welche die Softwarekompatibilität mit diesen Anwendungen verbessert. Diese Konfigurationseinstellungen haben Auswirkungen auf alle exisitierenden und neuen Sandboxen.</translation>
</message>
</context>
<context>

View File

@ -105,7 +105,7 @@
<location filename="Windows/OptionsWindow.cpp" line="162"/>
<location filename="Windows/OptionsWindow.cpp" line="169"/>
<source>Browse for Program</source>
<translation>Procurar pelo programa</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/OptionsWindow.cpp" line="217"/>
@ -126,7 +126,7 @@
<message>
<location filename="Windows/OptionsWindow.cpp" line="739"/>
<source>Please enter a program path</source>
<translation>Insira um caminho do programa</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/OptionsWindow.cpp" line="749"/>
@ -143,17 +143,17 @@
<message>
<location filename="Windows/OptionsWindow.cpp" line="759"/>
<source>Please enter a service identifier</source>
<translation>Por favor, insira um identificador de serviço</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/OptionsWindow.cpp" line="770"/>
<source>Service</source>
<translation>Serviço</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/OptionsWindow.cpp" line="770"/>
<source>Program</source>
<translation>Programa</translation>
<translation type="unfinished">Programa</translation>
</message>
<message>
<location filename="Windows/OptionsWindow.cpp" line="793"/>
@ -192,17 +192,17 @@
<message>
<location filename="Windows/OptionsWindow.cpp" line="1609"/>
<source>COM objects must be specified by their GUID, like: {00000000-0000-0000-0000-000000000000}</source>
<translation>Os objetos COM devem ser especificados pelo seu GUID, como: {00000000-0000-0000-0000-000000000000}</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/OptionsWindow.cpp" line="1615"/>
<source>RT interfaces must be specified by their name.</source>
<translation>As interfaces RT devem ser especificadas pelo nome.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/OptionsWindow.cpp" line="1894"/>
<source>Please enter an auto exec command</source>
<translation>Por favor, insira um comando auto exec</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/OptionsWindow.cpp" line="2095"/>
@ -394,27 +394,27 @@
<message>
<location filename="Windows/PopUpWindow.h" line="224"/>
<source>Recover to:</source>
<translation>Recuperar para:</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/PopUpWindow.h" line="229"/>
<source>Browse</source>
<translation>Procurar</translation>
<translation type="unfinished">Procurar</translation>
</message>
<message>
<location filename="Windows/PopUpWindow.h" line="230"/>
<source>Clear folder list</source>
<translation>Limpar lista de pastas</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/PopUpWindow.h" line="242"/>
<source>Recover &amp;&amp; Explore</source>
<translation>Recuperar &amp;&amp; Explorar</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/PopUpWindow.h" line="243"/>
<source>Recover &amp;&amp; Open/Run</source>
<translation>Recuperar &amp;&amp; Abrir/Executar</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Windows/PopUpWindow.h" line="245"/>
@ -444,7 +444,7 @@
<message>
<location filename="Windows/PopUpWindow.h" line="282"/>
<source>Select Directory</source>
<translation>Selecione Diretório</translation>
<translation type="unfinished"></translation>
</message>
</context>
<context>
@ -462,29 +462,29 @@
</message>
<message>
<location filename="Windows/PopUpWindow.cpp" line="220"/>
<source>Do you want to allow %4 (%5) to copy a %1 large file into sandbox: %2?
<source>Do you want to allow %4 (%5) to copy a %1 large file into sandbox: %2?
File name: %3</source>
<oldsource>Do you want to allow %4 (%5) to copy a %1 large file into sandbox: %2?
File name: %3</oldsource>
<translation>Deseja permitir que %4 (%5) copie um arquivo grande %1 para o sandboxie: %2?
<translation type="unfinished">Deseja permitir que %4 (%5) copie um arquivo grande %1 para o sandboxie: %2?
Nome do arquivo: %3</translation>
</message>
<message>
<location filename="Windows/PopUpWindow.cpp" line="226"/>
<source>Do you want to allow %1 (%2) access to the internet?
<source>Do you want to allow %1 (%2) access to the internet?
Full path: %3</source>
<oldsource>Do you want to allow %1 (%2) access to the internet?
Full path: %3</oldsource>
<translation>Deseja permitir o acesso de %1 (%2) à Internet?
<translation type="unfinished">Deseja permitir o acesso de %1 (%2) à Internet?
Caminho completo: %3</translation>
</message>
<message>
<location filename="Windows/PopUpWindow.cpp" line="280"/>
<source>%1 is eligible for quick recovery from %2.
<source>%1 is eligible for quick recovery from %2.
The file was written by: %3</source>
<oldsource>%1 is eligible for quick recovery from %2.
The file was written by: %3</oldsource>
<translation>O arquivo %1 está qualificado para recuperação rápida de %2.
<translation type="unfinished">O arquivo %1 está qualificado para recuperação rápida de %2.
Gravado por: %3</translation>
</message>
<message>
@ -500,11 +500,11 @@ Gravado por: %3</translation>
</message>
<message>
<location filename="Windows/PopUpWindow.cpp" line="368"/>
<source>Migrating a large file %1 into the sandbox %2, %3 left.
<source>Migrating a large file %1 into the sandbox %2, %3 left.
Full path: %4</source>
<oldsource>Migrating a large file %1 into the sandbox %2, %3 left.
Full path: %4</oldsource>
<translation>Migrando um arquivo grande %1 para o sandboxie %2, %3 restante.
<translation type="unfinished">Migrando um arquivo grande %1 para o sandboxie %2, %3 restante.
Caminho completo: %4</translation>
</message>
<message>
@ -552,7 +552,7 @@ Caminho completo: %4</translation>
<message>
<location filename="Models/ResMonModel.cpp" line="100"/>
<source>Unknown</source>
<translation>Desconhecido</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Models/ResMonModel.cpp" line="147"/>
@ -635,17 +635,17 @@ Caminho completo: %4</translation>
<message>
<location filename="SandMan.cpp" line="125"/>
<source>Copy Cell</source>
<translation>Copiar Célula</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="126"/>
<source>Copy Row</source>
<translation>Copiar Linha</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="127"/>
<source>Copy Panel</source>
<translation>Copiar Painel</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="163"/>
@ -822,7 +822,7 @@ Caminho completo: %4</translation>
<message>
<location filename="SandMan.cpp" line="390"/>
<source>Reset all hidden messages</source>
<translation>Redefinir todas as mensagens ocultas</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="392"/>
@ -838,12 +838,12 @@ Caminho completo: %4</translation>
<message>
<location filename="SandMan.cpp" line="395"/>
<source>Resource Logging</source>
<translation>Log de Recursos</translation>
<translation>Registro de Recursos</translation>
</message>
<message>
<location filename="SandMan.cpp" line="398"/>
<source>API Call Logging</source>
<translation>Log de Chamada de API</translation>
<translation>Registrando Chamada API</translation>
</message>
<message>
<location filename="SandMan.cpp" line="402"/>
@ -899,32 +899,32 @@ Caminho completo: %4</translation>
<message>
<location filename="SandMan.cpp" line="543"/>
<source>Failed to stop all Sandboxie components</source>
<translation>Falha ao parar todos os componentes do Sandboxie</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="545"/>
<source>Failed to start required Sandboxie components</source>
<translation>Falha ao iniciar os componentes exigidos do Sandboxie</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="702"/>
<source>Sandboxie-Plus was started in portable mode, do you want to put the SandBox folder into its parent directory?</source>
<translation>Sandboxie-Plus foi iniciado no modo portátil, você deseja colocar a pasta SandBox em seu diretório pai?</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="735"/>
<source> - NOT connected</source>
<translation> - NÃO conectado</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="888"/>
<source>The file %1 already exists, do you want to overwrite it?</source>
<translation>O arquivo %1 existe, deseja sobrescrevê-lo?</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="889"/>
<source>Do this for all files!</source>
<translation>Fazer isso para todos os arquivos!</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="908"/>
@ -946,12 +946,12 @@ Caminho completo: %4</translation>
<message>
<location filename="SandMan.cpp" line="1201"/>
<source>Do you also want to reset hidden message boxes (yes), or only all log messages (no)?</source>
<translation>Você também deseja redefinir as caixas de mensagens ocultas (sim) ou apenas todas as mensagens de log (não)?</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1231"/>
<source>The changes will be applied automatically whenever the file gets saved.</source>
<translation>As alterações serão aplicadas automaticamente sempre que o arquivo for salvo.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1232"/>
@ -962,8 +962,7 @@ Caminho completo: %4</translation>
<location filename="SandMan.cpp" line="1295"/>
<source>To use API logging you must first set up the LogApiDll from https://github.com/sandboxie-plus/LogApiDll with one or more sandboxes.
Please download the latest release and set it up with the Sandboxie.ini as instructed in the README.md of the project.</source>
<translation>Para usar o log de API, você deve primeiro configurar o LogApiDll em https://github.com/sandboxie-plus/LogApiDll com um ou mais caixas de areia.
Faça o download da versão mais recente e configure-o com o Sandboxie.ini conforme instruído no README.md do projeto.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1383"/>
@ -973,7 +972,7 @@ Faça o download da versão mais recente e configure-o com o Sandboxie.ini confo
<message>
<location filename="SandMan.cpp" line="1755"/>
<source>&lt;p&gt;Sandboxie-Plus is an open source continuation of Sandboxie.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Visit &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; for more information.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Icons from &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Sandboxie-Plus é uma continuação de código aberto do Sandboxie.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Visite &lt;a href=&quot;https://sandboxie-plus.com&quot;&gt;sandboxie-plus.com&lt;/a&gt; para maiores informações.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Ícones de &lt;a href=&quot;https://icons8.com&quot;&gt;icons8.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</translation>
<translation type="unfinished"></translation>
</message>
<message>
<source>Admin rights required.</source>
@ -991,7 +990,7 @@ Faça o download da versão mais recente e configure-o com o Sandboxie.ini confo
<message>
<location filename="SandMan.cpp" line="1388"/>
<source>Failed to communicate with Sandboxie Service: %1</source>
<translation>Falha ao se comunicar com o serviço Sandboxie: %1</translation>
<translation>Falha ao comunicar com o serviço Sandboxie: %1</translation>
</message>
<message>
<source>Can&apos;t find Sandboxie instal path.</source>
@ -1127,7 +1126,7 @@ Faça o download da versão mais recente e configure-o com o Sandboxie.ini confo
<message>
<location filename="SandMan.cpp" line="1682"/>
<source>No new updates found, your Sandboxie-Plus is up-to-date.</source>
<translation>Nenhuma nova atualização encontrada, seu Sandboxie-Plus está atualizado.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1728"/>
@ -1269,32 +1268,32 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="SandMan.cpp" line="1385"/>
<source>Administrator rights are required for this operation.</source>
<translation>Direitos de administrador são necessários para esta operação.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1387"/>
<source>Failed to connect to the driver</source>
<translation>Falha ao se conectar com o driver</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1389"/>
<source>An incompatible Sandboxie %1 was found. Compatible versions: %2</source>
<translation>Um Sandboxie %1 incompatível foi encontrado. Versões compatíveis: %2</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1390"/>
<source>Can&apos;t find Sandboxie installation path.</source>
<translation>Não é possível encontrar o caminho de instalação do Sandboxie.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1394"/>
<source>The sandbox name can not be longer than 32 characters.</source>
<translation>O nome da caixa de área não pode ter mais de 32 caracteres.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1409"/>
<source>Can&apos;t remove a snapshot that is shared by multiple later snapshots</source>
<translation>Não é possível remover instantâneos compartilhado por vários instantâneos posteriores</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1434"/>
@ -1304,12 +1303,12 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="SandMan.cpp" line="1502"/>
<source>Do you want to open %1 in a sandboxed (yes) or unsandboxed (no) Web browser?</source>
<translation>Deseja abrir %1 em um navegador Web na caixa de areia (sim) ou fora da caixa de areia (não)?</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1503"/>
<source>Remember choice for later.</source>
<translation>Lembrar escolha mais tarde.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="SandMan.cpp" line="1534"/>
@ -1415,11 +1414,11 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="Models/SbieModel.cpp" line="418"/>
<source>Path / Command Line</source>
<translation>Caminho / Linha de Comando</translation>
<translation type="unfinished"></translation>
</message>
<message>
<source>Path</source>
<translation>Caminho</translation>
<translation type="vanished">Caminho</translation>
</message>
</context>
<context>
@ -1501,7 +1500,7 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<location filename="Views/SbieView.cpp" line="101"/>
<source>Create Shortcut</source>
<oldsource>Create Desktop Shortcut</oldsource>
<translation>Criar Atalho</translation>
<translation type="unfinished">Criar Atalho na Área de Trabalho</translation>
</message>
<message>
<location filename="Views/SbieView.cpp" line="76"/>
@ -1551,12 +1550,12 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="Views/SbieView.cpp" line="90"/>
<source>Sandbox Options</source>
<translation>Opções da Caixa de Areia</translation>
<translation>Opções do Sandbox</translation>
</message>
<message>
<location filename="Views/SbieView.cpp" line="91"/>
<source>Rename Sandbox</source>
<translation>Renomear Caixa de Areia</translation>
<translation>Renomear Sandbox</translation>
</message>
<message>
<location filename="Views/SbieView.cpp" line="93"/>
@ -1566,7 +1565,7 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="Views/SbieView.cpp" line="94"/>
<source>Remove Sandbox</source>
<translation>Remover Caixa de Areia</translation>
<translation>Remover Sandbox</translation>
</message>
<message>
<location filename="Views/SbieView.cpp" line="99"/>
@ -1591,12 +1590,12 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="Views/SbieView.cpp" line="111"/>
<source>Allow internet access</source>
<translation>Permitir acesso à Internet</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Views/SbieView.cpp" line="113"/>
<source>Force into this sandbox</source>
<translation>Força nessa caixa de areia</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Views/SbieView.cpp" line="115"/>
@ -1611,7 +1610,7 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="Views/SbieView.cpp" line="635"/>
<source>This box does not have Internet restrictions in place, do you want to enable them?</source>
<translation>Esta caixa não possui restrições à Internet. Deseja ativá-las?</translation>
<translation type="unfinished"></translation>
</message>
<message>
<source>Suspend</source>
@ -1625,21 +1624,21 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<location filename="Views/SbieView.cpp" line="171"/>
<source> File root: %1
</source>
<translation> Pasta de arquivo: %1
<translation> Raiz do arquivo: %1
</translation>
</message>
<message>
<location filename="Views/SbieView.cpp" line="172"/>
<source> Registry root: %1
</source>
<translation> Pasta de registro: %1
<translation> Raiz do registro: %1
</translation>
</message>
<message>
<location filename="Views/SbieView.cpp" line="173"/>
<source> IPC root: %1
</source>
<translation> Pasta do IPC: %1
<translation> Raiz IPC: %1
</translation>
</message>
<message>
@ -1882,7 +1881,7 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="Forms/OptionsWindow.ui" line="127"/>
<source>Prevent change to network and firewall parameters</source>
<translation>Impedir alterações nos parâmetros de rede e firewall</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="267"/>
@ -1948,7 +1947,7 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="Forms/OptionsWindow.ui" line="384"/>
<source>Protect this sandbox from deletion or emptying</source>
<translation>Protejer essa caixa de areia contra exclusão ou esvaziamento</translation>
<translation>Proteja essa caixa de areia contra exclusão ou esvaziamento</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="391"/>
@ -1990,7 +1989,7 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="Forms/OptionsWindow.ui" line="603"/>
<source>You can group programs together and give them a group name. Program groups can be used with some of the settings instead of program names.</source>
<translation>Você pode agrupar programas e dar um nome ao grupo. Os grupos de programas podem ser usados com algumas das configurações em vez de nomes de programas.</translation>
<translation>Você pode agrupar programas e dar-lhes um nome de grupo. Os grupos de programas podem ser usados com algumas das configurações em vez de nomes de programas.</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="616"/>
@ -2060,43 +2059,43 @@ Faça o download da versão mais recente e configure-a em sandboxie.ini conforme
<message>
<location filename="Forms/OptionsWindow.ui" line="96"/>
<source>Block access to the printer spooler</source>
<translation>Bloqueie o acesso ao spooler de impressão</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="221"/>
<source>Allow the print spooler to print to files outside the sandbox</source>
<translation>Permitir que o spooler de impressão imprima arquivos fora da caixa</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="250"/>
<source>Printing</source>
<translation>Impressão</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="257"/>
<source>Remove spooler restriction, printers can be installed outside the sandbox</source>
<translation>Remova a restrição do spooler, as impressoras podem ser instaladas fora do sandbox</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="322"/>
<location filename="Forms/OptionsWindow.ui" line="518"/>
<source>Add program</source>
<translation>Adicionar programa</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="444"/>
<source>Auto Start</source>
<translation>Auto Iniciar</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="450"/>
<source>Here you can specify programs and/or services that are to be started automatically in the sandbox when it is activated</source>
<translation>Aqui você pode especificar programas ou serviços que devem ser iniciados automaticamente na caixa de areia quando ela for ativada</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="537"/>
<source>Add service</source>
<translation>Adicionar serviço</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="773"/>
@ -2272,12 +2271,12 @@ Para acesso a arquivos, você pode usar o &apos;Direct All&apos; em vez de fazê
<message>
<location filename="Forms/OptionsWindow.ui" line="1376"/>
<source>Do not start sandboxed services using a system token (recommended)</source>
<translation>Não iniciar serviços no sandbox usando um token de sistema (recomendado)</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1390"/>
<source>Allow access to Smart Cards</source>
<translation>Permitir acesso a cartões inteligentes</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1397"/>
@ -2287,12 +2286,12 @@ Para acesso a arquivos, você pode usar o &apos;Direct All&apos; em vez de fazê
<message>
<location filename="Forms/OptionsWindow.ui" line="1326"/>
<source>Start the sandboxed RpcSs as a SYSTEM process (breaks some compatibility)</source>
<translation>Iniciar RpcSs com caixa de areia como um processo do SISTEMA (quebra alguma compatibilidade)</translation>
<translation type="unfinished">Iniciar RpcSs com caixa de areia como um processo do SISTEMA (quebra alguma compatibilidade)</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1424"/>
<source>Add sandboxed processes to job objects (recommended)</source>
<translation>Adicionar processos do sandbox a objetos de trabalho (recomendado)</translation>
<translation>Adicionar processos em sandbox a objetos de trabalho (recomendado)</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1306"/>
@ -2356,7 +2355,7 @@ Para acesso a arquivos, você pode usar o &apos;Direct All&apos; em vez de fazê
<message>
<location filename="Forms/OptionsWindow.ui" line="1548"/>
<source>Hide host processes from processes running in the sandbox.</source>
<translation>Ocultar processos do host de processos em execução na sandbox.</translation>
<translation>Ocultar processos de host de processos em execução na sandbox.</translation>
</message>
<message>
<source>Remove Process</source>
@ -2448,22 +2447,22 @@ ao invés de &quot;*&quot;.</translation>
<message>
<location filename="Forms/OptionsWindow.ui" line="1440"/>
<source>Lift security restrictions</source>
<translation>Levantar restrições de segurança</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1456"/>
<source>Sandbox isolation</source>
<translation>Isolamento da caixa de areia</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1466"/>
<source>Auto Exec</source>
<translation type="unfinished">Auto Executar</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1499"/>
<source>Here you can specify a list of commands that are executed every time the sandbox is initially populated.</source>
<translation>Aqui você pode especificar uma lista de comandos que serão executados sempre que o sandbox for iniciado.</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1663"/>
@ -2478,12 +2477,12 @@ ao invés de &quot;*&quot;.</translation>
<message>
<location filename="Forms/OptionsWindow.ui" line="1744"/>
<source>COM Class Trace</source>
<translation>COM Class Trace</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1751"/>
<source>&lt;- for this one the above does not apply</source>
<translation>&lt;- para este o acima não se aplica</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1767"/>
@ -2498,7 +2497,7 @@ ao invés de &quot;*&quot;.</translation>
<message>
<location filename="Forms/OptionsWindow.ui" line="1820"/>
<source>These options are intended for debugging compatibility issues, please do not use them in production use. </source>
<translation>Essas opções destinam-se a depurar problemas de compatibilidade, não as use em produção. </translation>
<translation>Essas opções destinam-se a depurar problemas de compatibilidade, não as use em produção.</translation>
</message>
<message>
<location filename="Forms/OptionsWindow.ui" line="1837"/>
@ -2665,7 +2664,7 @@ ao invés de &quot;*&quot;.</translation>
<message>
<location filename="Forms/SettingsWindow.ui" line="183"/>
<source>Open urls from this ui sandboxed</source>
<translation>Abrir urls dessa IU na caixa de areia</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="203"/>
@ -2680,7 +2679,7 @@ ao invés de &quot;*&quot;.</translation>
<message>
<location filename="Forms/SettingsWindow.ui" line="218"/>
<source>Only Administrator user accounts can make changes</source>
<translation>Apenas conta de usuário Administrador pode fazer alterações</translation>
<translation>Apenas conta de usuário Administrador podem fazer alterações</translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="231"/>
@ -2690,7 +2689,7 @@ ao invés de &quot;*&quot;.</translation>
<message>
<location filename="Forms/SettingsWindow.ui" line="238"/>
<source>Password must be entered in order to make changes</source>
<translation>Uma senha deve ser inserida para fazer alterações</translation>
<translation>A senha deve ser inserida para fazer alterações</translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="245"/>
@ -2717,17 +2716,17 @@ ao invés de &quot;*&quot;.</translation>
<message>
<location filename="Forms/SettingsWindow.ui" line="310"/>
<source>Sandbox &lt;a href=&quot;sbie://docs/filerootpath&quot;&gt;file system root&lt;/a&gt;: </source>
<translation>&lt;a href=&quot;sbie://docs/filerootpath&quot;&gt;Pasta dos arquivos&lt;/a&gt; do Sandbox: </translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="323"/>
<source>Sandbox &lt;a href=&quot;sbie://docs/ipcrootpath&quot;&gt;ipc root&lt;/a&gt;: </source>
<translation>&lt;a href=&quot;sbie://docs/ipcrootpath&quot;&gt;Pasta do ipc&lt;/a&gt; do Sandbox : </translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="339"/>
<source>Sandbox &lt;a href=&quot;sbie://docs/keyrootpath&quot;&gt;registry root&lt;/a&gt;: </source>
<translation>&lt;a href=&quot;sbie://docs/keyrootpath&quot;&gt;Pasta de registro&lt;/a&gt; do Sandbox: </translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="372"/>
@ -2742,7 +2741,7 @@ ao invés de &quot;*&quot;.</translation>
<message>
<location filename="Forms/SettingsWindow.ui" line="379"/>
<source>Portable root folder</source>
<translation>Pasta raiz portátil</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="Forms/SettingsWindow.ui" line="389"/>