GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • فهرست مطالب
  • winreg --- دسترسی به رجیستری ویندوز
  • msvcrt --- روال‌های مفید از ران‌تایم MS VC++
  • winsound --- رابط پخش صدا برای ویندوز
  • گزارش یک اشکال
  • بهبود این صفحه
  • نمایش منبع
  • نمایش منبع ترجمه
  • اندیس
  • ماژول‌ها
  • Python
  • 3.15.2 documentation
  • کتابخانه‌ی استاندارد پایتون
  • سرویس‌های خاص MS Windows

This view

  • Original page
  • New address

GeezerVison is showing python.github.io — winreg --- دسترسی به رجیستری ویندوز

winreg --- دسترسی به رجیستری ویندوز¶

کد منبع: PC/winreg.c


این توابع API رجیستری ویندوز را در اختیار پایتون قرار می‌دهند. به‌جای استفاده از یک عدد صحیح به‌عنوان دسته‌ی رجیستری، از یک شیء دسته استفاده می‌شود تا اطمینان حاصل شود که دسته‌ها به‌درستی بسته شوند، حتی اگر برنامه‌نویس از بستن آن‌ها به‌صورت صریح غفلت کند.

دسترس‌پذیری: Windows.

تغییر یافته در نسخه‌ی 3.3: چند تابع در این ماژول پیش‌تر WindowsError را پرتاب می‌کردند، که اکنون نام مستعاری از OSError است.

توابع¶

این ماژول توابع زیر را ارائه می‌دهد:

winreg.CloseKey(hkey)¶

یک کلید رجیستری را که پیش‌تر بازشده است می‌بندد. آرگومان hkey یک کلید را که پیش‌تر بازشده است مشخص می‌کند.

نکته

اگر hkey با استفاده از این متد (یا از طریق hkey.Close()) بسته نشود، هنگامی که شیء hkey توسط پایتون تخریب شود، بسته می‌شود.

winreg.ConnectRegistry(computer_name, key)¶

اتصالی به یک دسته‌ی رجیستری از پیش تعریف‌شده در رایانه‌ای دیگر برقرار می‌کند و یک شیء دسته برمی‌گرداند.

computer_name نام رایانه راه دور است، به شکل r"\\computername". اگر None باشد، از رایانه محلی استفاده می‌شود.

key دسته‌ی از پیش تعریف‌شده برای اتصال است.

مقدار بازگشتی، دسته‌ی کلید بازشده است. اگر تابع با شکست مواجه شود، یک استثنای OSError پرتاب می‌شود.

یک رویداد حسابرسی winreg.ConnectRegistry را با آرگومان‌های computer_name و key پرتاب می‌کند.

تغییر یافته در نسخه‌ی 3.3: بالا را ببینید.

winreg.CreateKey(key, sub_key)¶

کلید مشخص‌شده را ایجاد یا باز می‌کند و یک شیء دسته برمی‌گرداند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

sub_key یک رشته است که نام کلیدی را که این متد آن را باز یا ایجاد می‌کند، مشخص می‌کند.

اگر key یکی از کلیدهای از پیش تعریف‌شده باشد، sub_key می‌تواند None باشد. در آن حالت، دسته برگردانده‌شده همان دسته‌ی کلید (key handle) است که به تابع داده‌شده است.

اگر کلید از قبل وجود داشته باشد، این تابع کلید موجود را باز می‌کند.

مقدار بازگشتی، دسته‌ی کلید بازشده است. اگر تابع با شکست مواجه شود، یک استثنای OSError پرتاب می‌شود.

یک رویداد حسابرسی winreg.CreateKey را با آرگومان‌های key، sub_key و access پرتاب می‌کند.

یک رویداد حسابرسی winreg.OpenKey/result را با آرگومان key پرتاب می‌کند.

تغییر یافته در نسخه‌ی 3.3: بالا را ببینید.

winreg.CreateKeyEx(key, sub_key, reserved=0, access=KEY_WRITE)¶

کلید مشخص‌شده را ایجاد یا باز می‌کند و یک شیء دسته برمی‌گرداند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

sub_key یک رشته است که نام کلیدی را که این متد آن را باز یا ایجاد می‌کند، مشخص می‌کند.

reserved یک عدد صحیح رزروشده است و باید صفر باشد. مقدار پیش‌فرض صفر است.

access یک عدد صحیح است که یک نقاب دسترسی (access mask) را مشخص می‌کند؛ این نقاب، دسترسی امنیتی موردنظر برای کلید را توصیف می‌کند. پیش‌فرض KEY_WRITE است. برای سایر مقادیر مجاز، Access Rights را ببینید.

اگر key یکی از کلیدهای از پیش تعریف‌شده باشد، sub_key می‌تواند None باشد. در آن حالت، دسته برگردانده‌شده همان دسته‌ی کلید (key handle) است که به تابع داده‌شده است.

اگر کلید از قبل وجود داشته باشد، این تابع کلید موجود را باز می‌کند.

مقدار بازگشتی، دسته‌ی کلید بازشده است. اگر تابع با شکست مواجه شود، یک استثنای OSError پرتاب می‌شود.

یک رویداد حسابرسی winreg.CreateKey را با آرگومان‌های key، sub_key و access پرتاب می‌کند.

یک رویداد حسابرسی winreg.OpenKey/result را با آرگومان key پرتاب می‌کند.

اضافه شده در نسخه‌ی 3.2.

تغییر یافته در نسخه‌ی 3.3: بالا را ببینید.

winreg.DeleteKey(key, sub_key)¶

کلید مشخص‌شده را حذف می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

sub_key یک رشته است که باید یک زیرکلید از کلید شناسایی‌شده با پارامتر key باشد. این مقدار نباید None باشد، و کلید نمی‌تواند زیرکلید داشته باشد.

این متد نمی‌تواند کلیدهای دارای زیرکلید را حذف کند.

اگر متد موفق شود، کلید به‌طور کامل، شامل تمام مقدارهای آن، حذف می‌شود. اگر متد ناموفق باشد، استثنای OSError پرتاب می‌شود.

یک رویداد حسابرسی winreg.DeleteKey را با آرگومان‌های key، sub_key و access پرتاب می‌کند.

تغییر یافته در نسخه‌ی 3.3: بالا را ببینید.

winreg.DeleteKeyEx(key, sub_key, access=KEY_WOW64_64KEY, reserved=0)¶

کلید مشخص‌شده را حذف می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

sub_key رشته‌ای است که باید زیرکلیدی از کلید مشخص‌شده با پارامتر key باشد. این مقدار نباید None باشد، و کلید نباید زیرکلید داشته باشد.

reserved یک عدد صحیح رزروشده است و باید صفر باشد. مقدار پیش‌فرض صفر است.

access عدد صحیحی است که نقاب دسترسی‌ای را مشخص می‌کند که دسترسی امنیتی موردنظر برای کلید را توصیف می‌کند. مقدار پیش‌فرض KEY_WOW64_64KEY است. در ویندوز ۳۲ بیتی، ثابت‌های WOW64 نادیده گرفته می‌شوند. برای سایر مقادیر مجاز، حقوق دسترسی را ببینید.

این متد نمی‌تواند کلیدهای دارای زیرکلید را حذف کند.

اگر متد موفق شود، کلید به‌طور کامل، شامل تمام مقدارهای آن، حذف می‌شود. اگر متد ناموفق باشد، استثنای OSError پرتاب می‌شود.

در نسخه‌های پشتیبانی‌نشده ویندوز، NotImplementedError پرتاب می‌شود.

یک رویداد حسابرسی winreg.DeleteKey را با آرگومان‌های key، sub_key و access پرتاب می‌کند.

اضافه شده در نسخه‌ی 3.2.

تغییر یافته در نسخه‌ی 3.3: بالا را ببینید.

winreg.DeleteTree(key, sub_key=None)¶

کلید مشخص‌شده و تمام زیرکلیدها و مقادیر آن را به شکل بازگشتی حذف می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

پارامتر sub_key رشته‌ای است که نام زیرکلید مورد نظر برای حذف را مشخص می‌کند. اگر مقدار آن None باشد، تمام زیرکلیدها و مقادیر کلید مشخص‌شده را حذف می‌کند.

این تابع یک کلید و تمام زیرکلیدهای آن را حذف می‌کند. اگر پارامتر sub_key برابر با None باشد، تمام زیرکلیدها و مقادیر کلید مشخص‌شده حذف می‌شوند.

یک رویداد ممیزی با نام winreg.DeleteTree و آرگومان‌های key و sub_key را بالا می‌آورد (raise می‌کند).

اضافه شده در نسخه‌ی 3.15.

winreg.DeleteValue(key, value)¶

یک مقدار نام‌دار را از یک کلید رجیستری حذف می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

value یک رشته است که مقدار مورد نظر برای حذف را شناسایی می‌کند.

یک رویداد حسابرسی winreg.DeleteValue را با آرگومان‌های key و value پرتاب می‌کند.

winreg.EnumKey(key, index)¶

زیرکلیدهای یک کلید رجیستری باز را فهرست می‌کند و یک رشته برمی‌گرداند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

index یک عدد صحیح است که اندیس کلیدِ موردنظر برای بازیابی را مشخص می‌کند.

این تابع هر بار که فراخوانی می‌شود، نام یک زیرکلید را بازیابی می‌کند. این تابع معمولاً به‌طور مکرر فراخوانی می‌شود تا زمانی که استثنای OSError پرتاب شود، که نشان می‌دهد دیگر مقداری در دسترس نیست.

یک رویداد حسابرسی winreg.EnumKey را با آرگومان‌های key و index پرتاب می‌کند.

تغییر یافته در نسخه‌ی 3.3: بالا را ببینید.

winreg.EnumValue(key, index)¶

مقادیر یک کلید رجیستری باز را برمی‌شمارد و یک تاپل برمی‌گرداند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

index یک عدد صحیح است که اندیس مقدار مورد نظر برای بازیابی را مشخص می‌کند.

این تابع هر بار که فراخوانی می‌شود، نام یک زیرکلید را بازیابی می‌کند. معمولاً به‌طور مکرر فراخوانی می‌شود، تا زمانی که یک استثنای OSError پرتاب شود که نشان می‌دهد مقادیر بیشتری وجود ندارد.

نتیجه، تاپلی شامل ۳ آیتم است:

اندیس

معنی

0

رشته‌ای که نام مقدار را شناسایی می‌کند

1

شیءای که داده‌های مقدار را نگه می‌دارد و نوع آن به نوع رجیستری (registry) زیربنایی وابسته است

2

عدد صحیحی که نوع داده‌ی مقدار را مشخص می‌کند (جدول موجود در مستندات SetValueEx() را ببینید)

یک رویداد حسابرسی winreg.EnumValue را با آرگومان‌های key و index پرتاب می‌کند.

تغییر یافته در نسخه‌ی 3.3: بالا را ببینید.

winreg.ExpandEnvironmentStrings(str)¶

جای‌نگهدارهای متغیر محیطی %NAME% را در رشته‌هایی مانند REG_EXPAND_SZ بسط می‌دهد:

>>> ExpandEnvironmentStrings('%windir%')
'C:\\Windows'

یک رویداد حسابرسی winreg.ExpandEnvironmentStrings را با آرگومان str پرتاب می‌کند.

winreg.FlushKey(key)¶

تمام ویژگی‌های یک کلید را در رجیستری می‌نویسد.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

برای تغییر یک کلید، نیازی به فراخوانی FlushKey() نیست. تغییرات رجیستری توسط رجیستری و با استفاده از تخلیه‌کننده‌ی تنبل (lazy flusher) آن به دیسک تخلیه می‌شوند. تغییرات رجیستری همچنین در زمان خاموش شدن سیستم به دیسک تخلیه می‌شوند. برخلاف CloseKey()، متد FlushKey() تنها زمانی بازمی‌گردد که تمام داده‌ها در رجیستری نوشته شده باشند. یک برنامه باید تنها در صورتی FlushKey() را فراخوانی کند که به اطمینان کامل نیاز داشته باشد که تغییرات رجیستری روی دیسک قرار دارند.

نکته

اگر نمی‌دانید که آیا فراخوانی FlushKey() لازم است یا خیر، احتمالاً لازم نیست.

winreg.LoadKey(key, sub_key, file_name)¶

یک زیرکلید زیر کلید مشخص‌شده ایجاد می‌کند و اطلاعات ثبت را از یک پرونده مشخص‌شده در آن زیرکلید ذخیره می‌کند.

key یک دسته برگردانده‌شده توسط ConnectRegistry() یا یکی از ثابت‌های HKEY_USERS یا HKEY_LOCAL_MACHINE است.

sub_key رشته‌ای است که زیرکلید مورد نظر برای بارگذاری را شناسایی می‌کند.

file_name نام پرونده‌ای است که داده‌های رجیستری از آن بارگذاری می‌شود. این پرونده باید با تابع SaveKey() ایجاد شده باشد. در سامانه فایل‌بندی جدول تخصیص پرونده (FAT)، ممکن است نام پرونده پسوند نداشته باشد.

اگر فرآیند فراخوانی‌کننده امتیاز SE_RESTORE_PRIVILEGE را نداشته باشد، فراخوانی LoadKey() با شکست مواجه می‌شود. توجه داشته باشید که امتیازها با مجوزها متفاوت هستند — برای جزئیات بیشتر، مستندات RegLoadKey را ببینید.

اگر key یک دسته باشد که توسط ConnectRegistry() برگردانده‌شده است، آنگاه مسیر مشخص‌شده در file_name نسبت به رایانه راه‌دور است.

یک رویداد حسابرسی winreg.LoadKey را با آرگومان‌های key، sub_key و file_name پرتاب می‌کند.

winreg.OpenKey(key, sub_key, reserved=0, access=KEY_READ)¶
winreg.OpenKeyEx(key, sub_key, reserved=0, access=KEY_READ)¶

کلید مشخص‌شده را باز می‌کند و یک handle object برمی‌گرداند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

sub_key یک رشته است که sub_key را برای باز کردن شناسایی می‌کند.

reserved یک عدد صحیح رزروشده است و باید ۰ باشد. مقدار پیش‌فرض ۰ است.

access یک عدد صحیح است که یک نقاب دسترسی را مشخص می‌کند و دسترسی امنیتی موردنظر برای کلید را توصیف می‌کند. مقدار پیش‌فرض KEY_READ است. برای سایر مقادیر مجاز، Access Rights را ببینید.

نتیجه یک دسته جدید برای کلید مشخص‌شده است.

اگر تابع با شکست مواجه شود، OSError پرتاب می‌شود.

یک رویداد حسابرسی winreg.OpenKey را با آرگومان‌های key، sub_key، access پرتاب می‌کند.

یک رویداد حسابرسی winreg.OpenKey/result را با آرگومان key پرتاب می‌کند.

تغییر یافته در نسخه‌ی 3.2: اجازه‌ی استفاده از آرگومان‌های نام‌دار.

تغییر یافته در نسخه‌ی 3.3: بالا را ببینید.

winreg.QueryInfoKey(key)¶

اطلاعات مربوط به یک کلید را به‌صورت یک تاپل برمی‌گرداند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

نتیجه، تاپلی شامل ۳ آیتم است:

اندیس

معنی

0

عدد صحیحی که تعداد زیرکلیدهای این کلید را نشان می‌دهد.

1

یک عدد صحیح که تعداد مقادیر این کلید را نشان می‌دهد.

2

یک عدد صحیح که زمان آخرین تغییر کلید (در صورت در دسترس بودن) را بر حسب ۱۰۰ نانوثانیه از ۱ ژانویه ۱۶۰۱ نشان می‌دهد.

یک رویداد حسابرسی winreg.QueryInfoKey را با آرگومان key پرتاب می‌کند.

winreg.QueryValue(key, sub_key)¶

مقدار بی‌نام برای یک کلید را به‌صورت یک رشته بازیابی می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

sub_key یک رشته است که نام زیرکلید مرتبط با مقدار را در خود نگه می‌دارد. اگر این پارامتر None یا خالی باشد، تابع مقدار تنظیم‌شده توسط متد SetValue() برای کلید مشخص‌شده با key را بازیابی می‌کند.

مقادیر موجود در رجیستری دارای کامپوننت‌های نام، نوع و داده هستند. این متد داده‌ی اولین مقدار یک کلید را که نام آن NULL است، بازیابی می‌کند. اما فراخوانی API زیربنایی نوع را برنمی‌گرداند، بنابراین در صورت امکان همیشه از QueryValueEx() استفاده کنید.

یک رویداد حسابرسی winreg.QueryValue را با آرگومان‌های key، sub_key و value_name پرتاب می‌کند.

winreg.QueryValueEx(key, value_name)¶

نوع و داده‌ها را برای نام مقدار مشخصِ مرتبط با یک کلید رجیستری باز، بازیابی می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

value_name رشته‌ای است که مقدار مورد پرس‌وجو را نشان می‌دهد.

نتیجه یک تاپل با ۲ آیتم است:

اندیس

معنی

0

مقدار آیتم رجیستری.

1

عدد صحیحی که نوع رجیستری این مقدار را مشخص می‌کند (جدول موجود در مستندات SetValueEx() را ببینید)

یک رویداد حسابرسی winreg.QueryValue را با آرگومان‌های key، sub_key و value_name پرتاب می‌کند.

winreg.SaveKey(key, file_name)¶

کلید مشخص‌شده و تمام زیرکلیدهای آن را در پرونده مشخص‌شده ذخیره می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

file_name نام پرونده‌ای است که داده‌های رجیستری در آن ذخیره می‌شود. این پرونده نمی‌تواند از قبل وجود داشته باشد. اگر این نام پرونده شامل پسوند باشد، نمی‌توان از آن در سیستم‌های پرونده جدول تخصیص پرونده (FAT) توسط متد LoadKey() استفاده کرد.

اگر key نمایانگر یک کلید روی یک رایانه راه‌دور باشد، مسیری که file_name توصیف می‌کند نسبت به رایانه راه‌دور نسبی است. فراخواننده‌ی این متد باید دارای امتیاز امنیتی SeBackupPrivilege باشد. توجه داشته باشید که امتیازها با مجوزها تفاوت دارند — برای جزئیات بیشتر، مستندات تعارض میان حقوق کاربر و مجوزها را ببینید.

این تابع NULL را برای security_attributes به API ارسال می‌کند.

یک رویداد حسابرسی winreg.SaveKey را با آرگومان‌های key، file_name پرتاب می‌کند.

winreg.SetValue(key, sub_key, type, value)¶

یک مقدار را به یک کلید مشخص مرتبط می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

sub_key رشته‌ای است که نام زیرکلیدی را که مقدار با آن مرتبط است، مشخص می‌کند.

type یک عدد صحیح است که نوع داده را مشخص می‌کند. در حال حاضر این باید REG_SZ باشد، به این معنا که فقط رشته‌ها پشتیبانی می‌شوند. برای پشتیبانی از انواع دیگر داده از تابع SetValueEx() استفاده کنید.

value یک رشته است که مقدار جدید را مشخص می‌کند.

اگر کلید مشخص‌شده با پارامتر sub_key وجود نداشته باشد، تابع SetValue آن را ایجاد می‌کند.

طول مقادیر به حافظه‌ی در دسترس محدود است. مقادیر طولانی (بیش از ۲۰۴۸ بایت) باید به‌صورت پرونده ذخیره شوند و نام پرونده‌ها در رجیستری پیکربندی ذخیره شود. این کار به عملکرد کارآمد رجیستری کمک می‌کند.

کلید مشخص‌شده با پارامتر key باید با دسترسی KEY_SET_VALUE باز شده باشد.

یک رویداد حسابرسی winreg.SetValue را با آرگومان‌های key، sub_key، type و value پرتاب می‌کند.

winreg.SetValueEx(key, value_name, reserved, type, value)¶

داده‌ها را در فیلد مقدار یک کلید رجیستری باز ذخیره می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

value_name رشته‌ای است که نام زیرکلید مرتبط با مقدار را مشخص می‌کند.

reserved می‌تواند هر مقداری باشد — همیشه صفر به API ارسال می‌شود.

type یک عدد صحیح است که نوع داده را مشخص می‌کند. برای انواع موجود، انواع مقدار را ببینید.

value یک رشته است که مقدار جدید را مشخص می‌کند.

این متد همچنین می‌تواند اطلاعات اضافی مقدار و نوع را برای کلید مشخص‌شده تنظیم کند. کلید شناسایی‌شده توسط پارامتر key باید با دسترسی KEY_SET_VALUE باز شده باشد.

برای باز کردن کلید، از متدهای CreateKey() یا OpenKey() استفاده کنید.

طول مقادیر به حافظه‌ی در دسترس محدود است. مقادیر طولانی (بیش از ۲۰۴۸ بایت) باید به‌صورت پرونده ذخیره شوند و نام پرونده‌ها در رجیستری پیکربندی ذخیره شود. این کار به عملکرد کارآمد رجیستری کمک می‌کند.

یک رویداد حسابرسی winreg.SetValue را با آرگومان‌های key، sub_key، type و value پرتاب می‌کند.

winreg.DisableReflectionKey(key)¶

بازتاب رجیستری (registry reflection) را برای فرآیندهای ۳۲ بیتی در حال اجرا بر روی سیستم‌عامل ۶۴ بیتی غیرفعال می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

معمولاً اگر روی یک سیستم‌عامل ۳۲ بیتی اجرا شود، NotImplementedError پرتاب می‌شود.

اگر کلید در فهرست بازتاب نباشد، تابع با موفقیت اجرا می‌شود، اما هیچ اثری ندارد. غیرفعال‌سازی بازتاب برای یک کلید، بر بازتاب هیچ‌یک از زیرکلیدها تأثیر نمی‌گذارد.

یک رویداد حسابرسی winreg.DisableReflectionKey را با آرگومان key پرتاب می‌کند.

winreg.EnableReflectionKey(key)¶

بازتاب رجیستری را برای کلید غیرفعالِ مشخص‌شده بازیابی می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

معمولاً اگر روی یک سیستم‌عامل ۳۲ بیتی اجرا شود، NotImplementedError پرتاب می‌شود.

بازگرداندن بازتاب برای یک کلید، تأثیری بر بازتاب هیچ‌یک از زیرکلیدها ندارد.

یک رویداد حسابرسی winreg.EnableReflectionKey را با آرگومان key پرتاب می‌کند.

winreg.QueryReflectionKey(key)¶

وضعیت بازتاب کلید مشخص‌شده را تعیین می‌کند.

key یک کلید از قبل باز است، یا یکی از ثابت‌های HKEY_* از پیش تعریف‌شده است.

اگر بازتاب غیرفعال باشد، True را برمی‌گرداند.

معمولاً اگر روی یک سیستم‌عامل ۳۲ بیتی اجرا شود، NotImplementedError پرتاب می‌شود.

یک رویداد حسابرسی winreg.QueryReflectionKey را با آرگومان key پرتاب می‌کند.

ثابت‌ها¶

ثابت‌های زیر برای استفاده در بسیاری از توابع winreg تعریف شده‌اند.

ثابت‌های HKEY_*¶

winreg.HKEY_CLASSES_ROOT¶

ورودی‌های رجیستری زیرمجموعه‌ی این کلید، انواع (یا کلاس‌های) اسناد و ویژگی‌های مرتبط با آن انواع را تعریف می‌کنند. برنامه‌های پوسته و COM از اطلاعات ذخیره‌شده در زیر این کلید استفاده می‌کنند.

winreg.HKEY_CURRENT_USER¶

ورودی‌های رجیستری زیرمجموعه‌ی این کلید، ترجیحات کاربر جاری را مشخص می‌کنند. این ترجیحات شامل تنظیمات متغیرهای محیطی، داده‌هایی درباره‌ی گروه‌های برنامه، رنگ‌ها، چاپگرها، اتصال‌های شبکه و ترجیحات برنامه‌ها می‌شوند.

winreg.HKEY_LOCAL_MACHINE¶

ورودی‌های رجیستری زیرمجموعه‌ی این کلید، وضعیت فیزیکی رایانه را تعریف می‌کنند، از جمله داده‌هایی درباره‌ی نوع گذرگاه، حافظه‌ی سیستم و سخت‌افزار و نرم‌افزار نصب‌شده.

winreg.HKEY_USERS¶

ورودی‌های رجیستری زیرمجموعه این کلید، پیکربندی پیش‌فرض کاربر برای کاربران جدید در رایانه محلی و پیکربندی کاربر برای کاربر جاری را تعریف می‌کنند.

winreg.HKEY_PERFORMANCE_DATA¶

ورودی‌های رجیستری زیرمجموعه‌ی این کلید به شما امکان می‌دهند به داده‌های کارایی دسترسی پیدا کنید. داده‌ها در واقع در رجیستری ذخیره نمی‌شوند؛ توابع رجیستری باعث می‌شوند سیستم داده‌ها را از منبعشان جمع‌آوری کند.

winreg.HKEY_CURRENT_CONFIG¶

شامل اطلاعاتی درباره‌ی نمایه‌ی سخت‌افزاری کنونی سیستم رایانه‌ای محلی است.

winreg.HKEY_DYN_DATA¶

این کلید در نسخه‌های ویندوز پس از 98 استفاده نمی‌شود.

حقوق دسترسی¶

برای اطلاعات بیشتر، Registry Key Security and Access را ببینید.

winreg.KEY_ALL_ACCESS¶

حقوق دسترسی STANDARD_RIGHTS_REQUIRED، KEY_QUERY_VALUE، KEY_SET_VALUE، KEY_CREATE_SUB_KEY، KEY_ENUMERATE_SUB_KEYS، KEY_NOTIFY و KEY_CREATE_LINK را ترکیب می‌کند.

winreg.KEY_WRITE¶

حقوق دسترسی STANDARD_RIGHTS_WRITE، KEY_SET_VALUE و KEY_CREATE_SUB_KEY را ترکیب می‌کند.

winreg.KEY_READ¶

مقدارهای STANDARD_RIGHTS_READ، KEY_QUERY_VALUE، KEY_ENUMERATE_SUB_KEYS و KEY_NOTIFY را ترکیب می‌کند.

winreg.KEY_EXECUTE¶

معادل با KEY_READ.

winreg.KEY_QUERY_VALUE¶

برای پرس‌وجوی مقادیر یک کلید رجیستری لازم است.

winreg.KEY_SET_VALUE¶

برای ایجاد، حذف یا تنظیم یک مقدار رجیستری لازم است.

winreg.KEY_CREATE_SUB_KEY¶

برای ایجاد یک زیرکلید از یک کلید رجیستری لازم است.

winreg.KEY_ENUMERATE_SUB_KEYS¶

برای فهرست کردن زیرکلیدهای یک کلید رجیستری مورد نیاز است.

winreg.KEY_NOTIFY¶

برای درخواست اعلان‌های تغییر برای یک کلید رجیستری یا زیرکلیدهای یک کلید رجیستری لازم است.

winreg.KEY_CREATE_LINK¶

برای استفاده‌ی سیستم رزرو شده است.

مخصوص ۶۴ بیتی¶

برای اطلاعات بیشتر، Accessing an Alternate Registry View را ببینید.

winreg.KEY_WOW64_64KEY¶

نشان می‌دهد که یک برنامه در ویندوز ۶۴‌بیتی باید روی نمای رجیستری ۶۴‌بیتی (64-bit registry view) عمل کند. در ویندوز ۳۲‌بیتی، این ثابت نادیده گرفته می‌شود.

winreg.KEY_WOW64_32KEY¶

نشان می‌دهد که یک برنامه در ویندوز ۶۴‌بیتی باید روی نمای رجیستری ۳۲‌بیتی (registry view) عمل کند. در ویندوز ۳۲‌بیتی، این ثابت نادیده گرفته می‌شود.

انواع مقدار¶

برای اطلاعات بیشتر، Registry Value Types را ببینید.

winreg.REG_BINARY¶

داده‌های دودویی در هر شکلی.

winreg.REG_DWORD¶

عدد ۳۲ بیتی.

winreg.REG_DWORD_LITTLE_ENDIAN¶

یک عدد ۳۲‌بیتی در قالب کوچک‌اندیان (little-endian). معادل REG_DWORD.

winreg.REG_DWORD_BIG_ENDIAN¶

یک عدد ۳۲ بیتی در قالب بزرگ‌اندیان (big-endian).

winreg.REG_EXPAND_SZ¶

رشته‌ی پایان‌یافته با null حاوی ارجاع‌هایی به متغیرهای محیطی (%PATH%).

winreg.REG_LINK¶

یک پیوند نمادین یونیکد.

winreg.REG_MULTI_SZ¶

دنباله‌ای از رشته‌های پایان‌یافته با null، که با دو نویسه null پایان می‌یابد. (پایتون این پایان‌دهی را به‌طور خودکار مدیریت می‌کند.)

winreg.REG_NONE¶

فاقد نوع مقدار تعریف‌شده.

winreg.REG_QWORD¶

یک عدد ۶۴ بیتی.

اضافه شده در نسخه‌ی 3.6.

winreg.REG_QWORD_LITTLE_ENDIAN¶

یک عدد ۶۴ بیتی در قالب کوچک‌اندیان (little-endian). معادل REG_QWORD.

اضافه شده در نسخه‌ی 3.6.

winreg.REG_RESOURCE_LIST¶

فهرست منابع یک راه‌انداز دستگاه.

winreg.REG_FULL_RESOURCE_DESCRIPTOR¶

یک تنظیم سخت‌افزاری.

winreg.REG_RESOURCE_REQUIREMENTS_LIST¶

فهرستی از منابع سخت‌افزاری.

winreg.REG_SZ¶

یک رشته‌ی پایان‌یافته با null.

اشیای دسته‌ی رجیستری¶

این شیء یک شیء Windows HKEY را پوشش می‌دهد و هنگامی که شیء نابود می‌شود، آن را به‌طور خودکار می‌بندد. برای تضمین پاک‌سازی، می‌توانید یا متد Close() را روی شیء فراخوانی کنید، یا تابع CloseKey() را.

تمام توابع رجیستری در این ماژول یکی از این شیء‌ها را برمی‌گردانند.

تمام توابع رجیستری در این ماژول که یک شیء دسته را می‌پذیرند، یک عدد صحیح را نیز می‌پذیرند؛ با این حال، استفاده از شیء دسته توصیه می‌شود.

اشیای Handle معناشناسی __bool__() را فراهم می‌کنند -- بنابراین

if handle:
    print("Yes")

اگر دسته در حال حاضر معتبر باشد (بسته یا جدا نشده باشد)، Yes را چاپ خواهد کرد.

این شیء همچنین از معناشناسی مقایسه‌ی برابری پشتیبانی می‌کند؛ بنابراین، اگر دو شیء دسته به یک مقدار دسته‌ی زیرین ویندوز ارجاع دهند، برابر در نظر گرفته می‌شوند. اشیای دسته‌ی بسته‌شده (آن‌هایی که مقدار دسته‌شان صفر است) همیشه برابر مقایسه می‌شوند.

اشیای دسته را می‌توان به یک عدد صحیح تبدیل کرد (برای مثال، با استفاده از تابع توکار int())، که در این صورت مقدار دسته ویندوزی زیرین بازگردانده می‌شود. همچنین می‌توانید از متد Detach() برای بازگرداندن دسته به‌صورت عدد صحیح و نیز جدا کردن دسته ویندوزی از شیء دسته استفاده کنید.

PyHKEY.Close()¶

دسته‌ی ویندوزی زیربنایی را می‌بندد.

اگر دسته از قبل بسته باشد، خطایی پرتاب نمی‌شود.

PyHKEY.Detach()¶

دسته ویندوز را از شیء دسته جدا می‌کند.

نتیجه، عدد صحیحی است که مقدار دسته را پیش از جدا شدن نگه می‌دارد. اگر دسته از پیش جدا یا بسته شده باشد، مقدار صفر برگردانده می‌شود.

پس از فراخوانی این تابع، دسته در عمل نامعتبر می‌شود، اما دسته بسته نمی‌شود. شما این تابع را هنگامی فراخوانی می‌کنید که نیاز دارید دسته Win32 زیربنایی فراتر از طول عمر شیء دسته باقی بماند.

یک رویداد حسابرسی winreg.PyHKEY.Detach را با آرگومان key پرتاب می‌کند.

PyHKEY.__enter__()¶
PyHKEY.__exit__(*exc_info)¶

شیء HKEY متدهای __enter__() و __exit__() را پیاده‌سازی می‌کند و بنابراین از پروتکل مدیریت زمینه برای دستور with پشتیبانی می‌کند:

with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key:
    ...  # work with key

هنگامی که کنترل از بلوک with خارج می‌شود، key را به‌طور خودکار می‌بندد.

تغییر یافته در نسخه‌ی 3.15: برای مقایسه‌ی برابری، اشیای دسته اکنون به‌جای هویت شیء، بر اساس مقدار دسته‌ی زیرین ویندوز خود مقایسه می‌شوند.

© حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرم‌افزار پایتون نسخه ۲ منتشر شده است.
مثال‌ها، دستورالعمل‌ها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شده‌اند.
برای اطلاعات بیشتر به تاریخچه و مجوز مراجعه کنید.

بنیاد نرم‌افزار پایتون یک شرکت غیرانتفاعی است. لطفاً کمک مالی کنید.

آخرین به‌روزرسانی در نوامبر 12, 2026 (06:19 UTC). آیا اشکالی یافتید؟
ساخته شده با Sphinx 9.1.0.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.