Abra uma chave de registro para gravar usando create
:
pub fn main() -> Result<(), windows::core::Error> {
let auto_start = windows_registry::CURRENT_USER.create("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run")?;
auto_start.set_value("Test", &windows_registry::Value::from("content"))?;
Ok(())
}
Isso funciona como esperado (create apenas abre a chave como ela já existe, e o valor é adicionado).
Entretanto, como a chave já existe, eu gostaria de simplesmente abri-la, por exemplo, como o seguinte:
fn main() -> Result<(), windows::core::Error> {
let auto_start = windows_registry::CURRENT_USER.open("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run")?;
auto_start.set_value("Test", &windows_registry::Value::from("content"))?;
Ok(())
}
No entanto, ele falha com um erro de acesso negado, mesmo se eu executar o programa em um terminal iniciado com "Executar como administrador":
Erro: Erro { código: HRESULT(0x80070005), mensagem: "Acesso negado." }
Por que isso acontece?
Não deveria open
precisar no máximo das mesmas permissões que create
?
E por que isso nem funciona em um terminal elevado?
Curiosamente, basta abrir sem definir um valor...