はじめに
Windows API (Windows Application Programming Interface) を Rust プログラミングで呼び出すことで、レジストリの値を取得することができます。winreg クレートを使用して、レジストリキーを開いて値を読み取ることができます。前回は、Rust プログラミングで Windows のダイアログボックスを表示されるプログラムを実装してみたので合わせて参考にしてみてください。今回は、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion の ProductName の値を読み取っていきます。
レジストリの値を取得するプログラムの作成
1. cargo new <プロジェクト名> で新しいバイナリパッケージを作成します。作成したプロジェクトディレクトリに移動し、code . で Visual Studio Code を起動します。
2. Cargo.toml ファイルに winreg ライブラリを追加します。
[dependencies]
winreg = "*"
3. main.rs ファイルにレジストリの値を取得するプログラムを記述します。
use winreg::enums::*;
use winreg::RegKey;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let hklm = RegKey::predef(HKEY_LOCAL_MACHINE);
let subkey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
let key = hklm.open_subkey(subkey)?;
let value: String = key.get_value("ProductName")?;
println!("Product Name: {value}");
Ok(())
}
コードをビルドして実行
1. [ctrl + @] でターミナルを起動し、cargo run を実行します。デバッグビルドが完了し、レジストリの値が表示されます。
おわりに
Windows API (Windows Application Programming Interface) を Rust プログラミングで呼び出すことで、レジストリの値を取得することができました。Windows API でもっと様々なことができそうなので今後試していけたらいいなと思います。
コメント