feat(security): add Win32 VirtualLock memory protection, CFA error diagnostics, and ShellBag OpSec
This commit is contained in:
+19
-1
@@ -158,7 +158,25 @@ fn current_timestamp() -> u64 {
|
||||
impl Database {
|
||||
/// Öffnet oder erstellt die Container-Datenbank und initialisiert die Pragmas.
|
||||
pub fn open<P: AsRef<Path>>(path: P) -> Result<Self> {
|
||||
let conn = Connection::open(path)?;
|
||||
let path_ref = path.as_ref();
|
||||
let conn = match Connection::open(path_ref) {
|
||||
Ok(c) => c,
|
||||
Err(e) => {
|
||||
let err_str = e.to_string();
|
||||
if err_str.contains("Access is denied")
|
||||
|| err_str.contains("permission denied")
|
||||
|| err_str.contains("os error 5")
|
||||
{
|
||||
bail!(
|
||||
"Zugriff auf '{}' verweigert (OS Fehler 5 / Access Denied).\n\
|
||||
[!] Möglicherweise blockiert durch Windows Defender 'Überwachter Ordnerzugriff' (Controlled Folder Access).\n\
|
||||
[i] Abhilfe: Fügen Sie 'sanctum.exe' in den Windows-Sicherheitseinstellungen (Viren- & Bedrohungsschutz -> Ransomware-Schutz -> Überwachter Ordnerzugriff) als erlaubte App hinzu, oder platzieren Sie den Container außerhalb geschützter Benutzerordner.",
|
||||
path_ref.display()
|
||||
);
|
||||
}
|
||||
return Err(e.into());
|
||||
}
|
||||
};
|
||||
let db = Self {
|
||||
conn: Arc::new(Mutex::new(conn)),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user