tonhowtf/omniget · error

reg add falhou

Error message

reg add falhou: {}

What it means

The Windows `reg add` command exited non-zero; the {} is reg.exe's trimmed stderr. reg_add builds /v (or /ve for empty value names) plus /t, /d and /f, so failures usually mean an invalid data type, an inaccessible key, or data rejected by the value's type.

Solutions

  1. Verify the `kind` argument is a valid reg type (REG_SZ, REG_DWORD, etc.) matching the data being written
  2. Run the app elevated when writing under HKEY_LOCAL_MACHINE
  3. Run the equivalent `reg add` command manually to see reg.exe's complaint
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src-tauri/omniget-core/src/core/tools/win_registry.rs:131 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/94bd966ab2b81bc4. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/win_registry.rs:131

            "reg delete falhou: {}",
            String::from_utf8_lossy(&o.stderr).trim()
        ));
    }
    Ok(())
}

pub async fn reg_add(key: &str, value: &str, kind: &str, data: &str) -> anyhow::Result<()> {
    let mut cmd = crate::core::process::command("reg");
    cmd.arg("add").arg(key);
    if value.is_empty() {
        cmd.arg("/ve");
    } else {
        cmd.arg("/v").arg(value);
    }
    cmd.arg("/t").arg(kind).arg("/d").arg(data).arg("/f");
    let o = cmd.output().await?;
    if !o.status.success() {
        return Err(anyhow!(
            "reg add falhou: {}",
            String::from_utf8_lossy(&o.stderr).trim()
        ));
    }
    Ok(())
}

pub fn backups_dir() -> Option<PathBuf> {
    super::tools_dir().map(|d| d.join("registry-backups"))
}

/// `reg export` da chave para um `.reg` com carimbo de hora. Devolve o caminho.
pub async fn reg_backup(key: &str) -> anyhow::Result<PathBuf> {
    let dir = backups_dir().ok_or_else(|| anyhow!("sem pasta de dados"))?;
    std::fs::create_dir_all(&dir)?;
    let safe: String = key
        .chars()
        .map(|c| if c.is_ascii_alphanumeric() { c } else { '_' })

View on GitHub (pinned to 8600b91f42)