GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||
GeezerVison is showing python.github.io — winreg --- دسترسی به رجیستری ویندوز
|
اندیس |
معنی |
|---|---|
|
رشتهای که نام مقدار را شناسایی میکند |
|
شیءای که دادههای مقدار را نگه میدارد و نوع آن به نوع رجیستری (registry) زیربنایی وابسته است |
|
عدد صحیحی که نوع دادهی مقدار را مشخص میکند (جدول موجود در مستندات |
یک رویداد حسابرسی winreg.EnumValue را با آرگومانهای key و index پرتاب میکند.
تغییر یافته در نسخهی 3.3: بالا را ببینید.
جاینگهدارهای متغیر محیطی %NAME% را در رشتههایی مانند REG_EXPAND_SZ بسط میدهد:
>>> ExpandEnvironmentStrings('%windir%') 'C:\\Windows'
یک رویداد حسابرسی winreg.ExpandEnvironmentStrings را با آرگومان str پرتاب میکند.
تمام ویژگیهای یک کلید را در رجیستری مینویسد.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
برای تغییر یک کلید، نیازی به فراخوانی FlushKey() نیست. تغییرات رجیستری توسط رجیستری و با استفاده از تخلیهکنندهی تنبل (lazy flusher) آن به دیسک تخلیه میشوند. تغییرات رجیستری همچنین در زمان خاموش شدن سیستم به دیسک تخلیه میشوند. برخلاف CloseKey()، متد FlushKey() تنها زمانی بازمیگردد که تمام دادهها در رجیستری نوشته شده باشند. یک برنامه باید تنها در صورتی FlushKey() را فراخوانی کند که به اطمینان کامل نیاز داشته باشد که تغییرات رجیستری روی دیسک قرار دارند.
نکته
اگر نمیدانید که آیا فراخوانی FlushKey() لازم است یا خیر، احتمالاً لازم نیست.
یک زیرکلید زیر کلید مشخصشده ایجاد میکند و اطلاعات ثبت را از یک پرونده مشخصشده در آن زیرکلید ذخیره میکند.
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 پرتاب میکند.
کلید مشخصشده را باز میکند و یک 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: بالا را ببینید.
اطلاعات مربوط به یک کلید را بهصورت یک تاپل برمیگرداند.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
نتیجه، تاپلی شامل ۳ آیتم است:
اندیس |
معنی |
|---|---|
|
عدد صحیحی که تعداد زیرکلیدهای این کلید را نشان میدهد. |
|
یک عدد صحیح که تعداد مقادیر این کلید را نشان میدهد. |
|
یک عدد صحیح که زمان آخرین تغییر کلید (در صورت در دسترس بودن) را بر حسب ۱۰۰ نانوثانیه از ۱ ژانویه ۱۶۰۱ نشان میدهد. |
یک رویداد حسابرسی winreg.QueryInfoKey را با آرگومان key پرتاب میکند.
مقدار بینام برای یک کلید را بهصورت یک رشته بازیابی میکند.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
sub_key یک رشته است که نام زیرکلید مرتبط با مقدار را در خود نگه میدارد. اگر این پارامتر None یا خالی باشد، تابع مقدار تنظیمشده توسط متد SetValue() برای کلید مشخصشده با key را بازیابی میکند.
مقادیر موجود در رجیستری دارای کامپوننتهای نام، نوع و داده هستند. این متد دادهی اولین مقدار یک کلید را که نام آن NULL است، بازیابی میکند. اما فراخوانی API زیربنایی نوع را برنمیگرداند، بنابراین در صورت امکان همیشه از QueryValueEx() استفاده کنید.
یک رویداد حسابرسی winreg.QueryValue را با آرگومانهای key، sub_key و value_name پرتاب میکند.
نوع و دادهها را برای نام مقدار مشخصِ مرتبط با یک کلید رجیستری باز، بازیابی میکند.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
value_name رشتهای است که مقدار مورد پرسوجو را نشان میدهد.
نتیجه یک تاپل با ۲ آیتم است:
اندیس |
معنی |
|---|---|
|
مقدار آیتم رجیستری. |
|
عدد صحیحی که نوع رجیستری این مقدار را مشخص میکند (جدول موجود در مستندات |
یک رویداد حسابرسی winreg.QueryValue را با آرگومانهای key، sub_key و value_name پرتاب میکند.
کلید مشخصشده و تمام زیرکلیدهای آن را در پرونده مشخصشده ذخیره میکند.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
file_name نام پروندهای است که دادههای رجیستری در آن ذخیره میشود. این پرونده نمیتواند از قبل وجود داشته باشد. اگر این نام پرونده شامل پسوند باشد، نمیتوان از آن در سیستمهای پرونده جدول تخصیص پرونده (FAT) توسط متد LoadKey() استفاده کرد.
اگر key نمایانگر یک کلید روی یک رایانه راهدور باشد، مسیری که file_name توصیف میکند نسبت به رایانه راهدور نسبی است. فراخوانندهی این متد باید دارای امتیاز امنیتی SeBackupPrivilege باشد. توجه داشته باشید که امتیازها با مجوزها تفاوت دارند — برای جزئیات بیشتر، مستندات تعارض میان حقوق کاربر و مجوزها را ببینید.
این تابع NULL را برای security_attributes به API ارسال میکند.
یک رویداد حسابرسی winreg.SaveKey را با آرگومانهای key، file_name پرتاب میکند.
یک مقدار را به یک کلید مشخص مرتبط میکند.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
sub_key رشتهای است که نام زیرکلیدی را که مقدار با آن مرتبط است، مشخص میکند.
type یک عدد صحیح است که نوع داده را مشخص میکند. در حال حاضر این باید REG_SZ باشد، به این معنا که فقط رشتهها پشتیبانی میشوند. برای پشتیبانی از انواع دیگر داده از تابع SetValueEx() استفاده کنید.
value یک رشته است که مقدار جدید را مشخص میکند.
اگر کلید مشخصشده با پارامتر sub_key وجود نداشته باشد، تابع SetValue آن را ایجاد میکند.
طول مقادیر به حافظهی در دسترس محدود است. مقادیر طولانی (بیش از ۲۰۴۸ بایت) باید بهصورت پرونده ذخیره شوند و نام پروندهها در رجیستری پیکربندی ذخیره شود. این کار به عملکرد کارآمد رجیستری کمک میکند.
کلید مشخصشده با پارامتر key باید با دسترسی KEY_SET_VALUE باز شده باشد.
یک رویداد حسابرسی winreg.SetValue را با آرگومانهای key، sub_key، type و value پرتاب میکند.
دادهها را در فیلد مقدار یک کلید رجیستری باز ذخیره میکند.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
value_name رشتهای است که نام زیرکلید مرتبط با مقدار را مشخص میکند.
reserved میتواند هر مقداری باشد — همیشه صفر به API ارسال میشود.
type یک عدد صحیح است که نوع داده را مشخص میکند. برای انواع موجود، انواع مقدار را ببینید.
value یک رشته است که مقدار جدید را مشخص میکند.
این متد همچنین میتواند اطلاعات اضافی مقدار و نوع را برای کلید مشخصشده تنظیم کند. کلید شناساییشده توسط پارامتر key باید با دسترسی KEY_SET_VALUE باز شده باشد.
برای باز کردن کلید، از متدهای CreateKey() یا OpenKey() استفاده کنید.
طول مقادیر به حافظهی در دسترس محدود است. مقادیر طولانی (بیش از ۲۰۴۸ بایت) باید بهصورت پرونده ذخیره شوند و نام پروندهها در رجیستری پیکربندی ذخیره شود. این کار به عملکرد کارآمد رجیستری کمک میکند.
یک رویداد حسابرسی winreg.SetValue را با آرگومانهای key، sub_key، type و value پرتاب میکند.
بازتاب رجیستری (registry reflection) را برای فرآیندهای ۳۲ بیتی در حال اجرا بر روی سیستمعامل ۶۴ بیتی غیرفعال میکند.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
معمولاً اگر روی یک سیستمعامل ۳۲ بیتی اجرا شود، NotImplementedError پرتاب میشود.
اگر کلید در فهرست بازتاب نباشد، تابع با موفقیت اجرا میشود، اما هیچ اثری ندارد. غیرفعالسازی بازتاب برای یک کلید، بر بازتاب هیچیک از زیرکلیدها تأثیر نمیگذارد.
یک رویداد حسابرسی winreg.DisableReflectionKey را با آرگومان key پرتاب میکند.
بازتاب رجیستری را برای کلید غیرفعالِ مشخصشده بازیابی میکند.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
معمولاً اگر روی یک سیستمعامل ۳۲ بیتی اجرا شود، NotImplementedError پرتاب میشود.
بازگرداندن بازتاب برای یک کلید، تأثیری بر بازتاب هیچیک از زیرکلیدها ندارد.
یک رویداد حسابرسی winreg.EnableReflectionKey را با آرگومان key پرتاب میکند.
وضعیت بازتاب کلید مشخصشده را تعیین میکند.
key یک کلید از قبل باز است، یا یکی از ثابتهای HKEY_* از پیش تعریفشده است.
اگر بازتاب غیرفعال باشد، True را برمیگرداند.
معمولاً اگر روی یک سیستمعامل ۳۲ بیتی اجرا شود، NotImplementedError پرتاب میشود.
یک رویداد حسابرسی winreg.QueryReflectionKey را با آرگومان key پرتاب میکند.
ثابتهای زیر برای استفاده در بسیاری از توابع winreg تعریف شدهاند.
ورودیهای رجیستری زیرمجموعهی این کلید، انواع (یا کلاسهای) اسناد و ویژگیهای مرتبط با آن انواع را تعریف میکنند. برنامههای پوسته و COM از اطلاعات ذخیرهشده در زیر این کلید استفاده میکنند.
ورودیهای رجیستری زیرمجموعهی این کلید، ترجیحات کاربر جاری را مشخص میکنند. این ترجیحات شامل تنظیمات متغیرهای محیطی، دادههایی دربارهی گروههای برنامه، رنگها، چاپگرها، اتصالهای شبکه و ترجیحات برنامهها میشوند.
ورودیهای رجیستری زیرمجموعهی این کلید، وضعیت فیزیکی رایانه را تعریف میکنند، از جمله دادههایی دربارهی نوع گذرگاه، حافظهی سیستم و سختافزار و نرمافزار نصبشده.
ورودیهای رجیستری زیرمجموعه این کلید، پیکربندی پیشفرض کاربر برای کاربران جدید در رایانه محلی و پیکربندی کاربر برای کاربر جاری را تعریف میکنند.
ورودیهای رجیستری زیرمجموعهی این کلید به شما امکان میدهند به دادههای کارایی دسترسی پیدا کنید. دادهها در واقع در رجیستری ذخیره نمیشوند؛ توابع رجیستری باعث میشوند سیستم دادهها را از منبعشان جمعآوری کند.
شامل اطلاعاتی دربارهی نمایهی سختافزاری کنونی سیستم رایانهای محلی است.
این کلید در نسخههای ویندوز پس از 98 استفاده نمیشود.
برای اطلاعات بیشتر، Registry Key Security and Access را ببینید.
حقوق دسترسی STANDARD_RIGHTS_REQUIRED، KEY_QUERY_VALUE، KEY_SET_VALUE، KEY_CREATE_SUB_KEY، KEY_ENUMERATE_SUB_KEYS، KEY_NOTIFY و KEY_CREATE_LINK را ترکیب میکند.
حقوق دسترسی STANDARD_RIGHTS_WRITE، KEY_SET_VALUE و KEY_CREATE_SUB_KEY را ترکیب میکند.
مقدارهای STANDARD_RIGHTS_READ، KEY_QUERY_VALUE، KEY_ENUMERATE_SUB_KEYS و KEY_NOTIFY را ترکیب میکند.
برای پرسوجوی مقادیر یک کلید رجیستری لازم است.
برای ایجاد، حذف یا تنظیم یک مقدار رجیستری لازم است.
برای ایجاد یک زیرکلید از یک کلید رجیستری لازم است.
برای فهرست کردن زیرکلیدهای یک کلید رجیستری مورد نیاز است.
برای درخواست اعلانهای تغییر برای یک کلید رجیستری یا زیرکلیدهای یک کلید رجیستری لازم است.
برای استفادهی سیستم رزرو شده است.
برای اطلاعات بیشتر، Accessing an Alternate Registry View را ببینید.
نشان میدهد که یک برنامه در ویندوز ۶۴بیتی باید روی نمای رجیستری ۶۴بیتی (64-bit registry view) عمل کند. در ویندوز ۳۲بیتی، این ثابت نادیده گرفته میشود.
نشان میدهد که یک برنامه در ویندوز ۶۴بیتی باید روی نمای رجیستری ۳۲بیتی (registry view) عمل کند. در ویندوز ۳۲بیتی، این ثابت نادیده گرفته میشود.
برای اطلاعات بیشتر، Registry Value Types را ببینید.
دادههای دودویی در هر شکلی.
عدد ۳۲ بیتی.
یک عدد ۳۲بیتی در قالب کوچکاندیان (little-endian). معادل REG_DWORD.
یک عدد ۳۲ بیتی در قالب بزرگاندیان (big-endian).
رشتهی پایانیافته با null حاوی ارجاعهایی به متغیرهای محیطی (%PATH%).
یک پیوند نمادین یونیکد.
دنبالهای از رشتههای پایانیافته با null، که با دو نویسه null پایان مییابد. (پایتون این پایاندهی را بهطور خودکار مدیریت میکند.)
فاقد نوع مقدار تعریفشده.
یک عدد ۶۴ بیتی.
اضافه شده در نسخهی 3.6.
یک عدد ۶۴ بیتی در قالب کوچکاندیان (little-endian). معادل REG_QWORD.
اضافه شده در نسخهی 3.6.
فهرست منابع یک راهانداز دستگاه.
یک تنظیم سختافزاری.
فهرستی از منابع سختافزاری.
یک رشتهی پایانیافته با null.
این شیء یک شیء Windows HKEY را پوشش میدهد و هنگامی که شیء نابود میشود، آن را بهطور خودکار میبندد. برای تضمین پاکسازی، میتوانید یا متد Close() را روی شیء فراخوانی کنید، یا تابع CloseKey() را.
تمام توابع رجیستری در این ماژول یکی از این شیءها را برمیگردانند.
تمام توابع رجیستری در این ماژول که یک شیء دسته را میپذیرند، یک عدد صحیح را نیز میپذیرند؛ با این حال، استفاده از شیء دسته توصیه میشود.
اشیای Handle معناشناسی __bool__() را فراهم میکنند -- بنابراین
if handle: print("Yes")
اگر دسته در حال حاضر معتبر باشد (بسته یا جدا نشده باشد)، Yes را چاپ خواهد کرد.
این شیء همچنین از معناشناسی مقایسهی برابری پشتیبانی میکند؛ بنابراین، اگر دو شیء دسته به یک مقدار دستهی زیرین ویندوز ارجاع دهند، برابر در نظر گرفته میشوند. اشیای دستهی بستهشده (آنهایی که مقدار دستهشان صفر است) همیشه برابر مقایسه میشوند.
اشیای دسته را میتوان به یک عدد صحیح تبدیل کرد (برای مثال، با استفاده از تابع توکار int())، که در این صورت مقدار دسته ویندوزی زیرین بازگردانده میشود. همچنین میتوانید از متد Detach() برای بازگرداندن دسته بهصورت عدد صحیح و نیز جدا کردن دسته ویندوزی از شیء دسته استفاده کنید.
دستهی ویندوزی زیربنایی را میبندد.
اگر دسته از قبل بسته باشد، خطایی پرتاب نمیشود.
دسته ویندوز را از شیء دسته جدا میکند.
نتیجه، عدد صحیحی است که مقدار دسته را پیش از جدا شدن نگه میدارد. اگر دسته از پیش جدا یا بسته شده باشد، مقدار صفر برگردانده میشود.
پس از فراخوانی این تابع، دسته در عمل نامعتبر میشود، اما دسته بسته نمیشود. شما این تابع را هنگامی فراخوانی میکنید که نیاز دارید دسته Win32 زیربنایی فراتر از طول عمر شیء دسته باقی بماند.
یک رویداد حسابرسی winreg.PyHKEY.Detach را با آرگومان key پرتاب میکند.
شیء HKEY متدهای __enter__() و __exit__() را پیادهسازی میکند و بنابراین از پروتکل مدیریت زمینه برای دستور with پشتیبانی میکند:
with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key: ... # work with key
هنگامی که کنترل از بلوک with خارج میشود، key را بهطور خودکار میبندد.
تغییر یافته در نسخهی 3.15: برای مقایسهی برابری، اشیای دسته اکنون بهجای هویت شیء، بر اساس مقدار دستهی زیرین ویندوز خود مقایسه میشوند.