Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでWindowsレジストリにアクセスする方法(winregモジュールの使い方)

Pythonは汎用性が高く、ユーザーが開発した豊富なモジュールが利用できるため、OSレベルのプログラミングにも適しています。本記事では、Pythonを使ってWindowsオペレーティングシステムのレジストリにアクセスする方法を解説します。

winregモジュールとは

Windowsレジストリを操作するには、Python標準ライブラリのwinregモジュールをインポートします。このモジュールはWindows専用であり、追加インストールなしですぐに使用できるのが特徴です。

レジストリへのアクセス手順

以下の例では、winregモジュールを使って、まずConnectRegistry関数でレジストリに接続し、次にOpenKey関数で目的のキーを開きます。最後にforループを設計し、取得したキーの内容を出力します。

サンプルコード

import winreg
# レジストリ内のキーへ接続
access_registry = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)

access_key = winreg.OpenKey(access_registry, r"SOFTWARE\Microsoft\Windows\CurrentVersion")
# キーにアクセスして、その配下のレジストリディレクトリを列挙
for n in range(20):
    try:
        x = winreg.EnumKey(access_key, n)
        print(x)
    except:
        break

実行結果

上記のコードを実行すると、次のような結果が得られます。

ApplicationFrame
AppModel
Appx
Audio
Authentication
AutoRotation
BITS
Casting
ClosedCaptioning
CloudExperienceHost
Component Based Servicing
……..
…..

コードのポイント

  • ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE):第一引数にNoneを指定するとローカルコンピュータのレジストリに接続します。リモートマシン名を指定することも可能です。
  • OpenKey:指定したパスのレジストリキーを開き、ハンドルを返します。raw文字列(r"...")を使うことでバックスラッシュのエスケープを避けられます。
  • EnumKey:開いたキーの配下にあるサブキーをインデックス順に列挙します。存在しないインデックスに到達すると例外が発生するため、try-exceptでbreakしています。

なお、レジストリの値を読み書きする場合はQueryValueExSetValueExなどの関数も利用できます。システム設定に影響する操作のため、書き込みを行う際は事前にレジストリのバックアップを取ることをおすすめします。

  1. VirtualenvでWindowsに複数のPythonバージョンを共存させる完全ガイド

    この記事を読んでいる方は、おそらく以下のような状況ではないでしょうか。 Windows 10以降のOSを使用している 同じPC上で複数のPythonバージョンを使い分けたい ネットで「とりあえずVirtualenvを使えばいい」と軽く言われるのにうんざりしている TL;DR(手順の要約) コマンドプロンプトを開き、pip install virtualenv を実行する 必要なPythonバージョンをダウンロードする(PATHには追加しないこと!)。新しくインストールしたバージョンの path\to\new_python.exe(python.exeへのフルパス)を控えておく 仮想環境を

  2. Windows 10でレジストリエディターへのアクセスを無効にする方法

    本記事では、Windows 10のレジストリエディターへのアクセスを無効にする手順をご紹介します。Windowsレジストリは、パソコンのあらゆる設定が格納された階層型データベースであり、非常に重要な仕組みです。ただし、ここでいう「無効化」とは、レジストリ自体の機能を止めることではありません。レジストリはこれまでどおり正常に動作し続けますが、あなた(または高度な知識を持つ技術者)以外の誰もPC上のレジストリエディターにアクセスできなくなり、許可されていない変更を加えられなくなります。レジストリへのアクセス制限は簡単な操作ではないため、必ず記事を最後まで読み、手順を完全に理解したうえで実行してくだ