使用以下命令打开要写入的注册表项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(())
}
这按预期工作(创建只是打开已经存在的键,然后添加值)。
但是,由于密钥已经存在,我只想简单地打开它,例如如下所示:
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(())
}
但是,即使我在以“以管理员身份运行”启动的终端中运行该程序,它也会因访问被拒绝错误而失败:
错误:错误 { 代码:HRESULT(0x80070005),消息:“访问被拒绝。”}
为什么会发生这种情况?
open
最多不需要与相同的权限create
?
为什么它甚至在高架终端上都无法工作?
有趣的是,只需打开而不设置值就可以工作......