نمایش نتایج 1 تا 7 از 7

نام تاپیک: شمردن تعداد کلیدها در رجیستری

  1. #1
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372

    شمردن تعداد کلیدها در رجیستری

    سلام

    من در رجیستری شاخه ای رو ایجاد کردم و در داخل اون شاخه هم چند تا کلید رو ایجاد کردم از اونجایی که در برنامه بدلایلی نیاز دارم تا تعداد زیر کلیدها رو بشمرم سعی میکنم تا از ATL (تابع EnumKey) به جای SDK (تابع RegEnumKeyEx ) استفاده کنم .
    من تابع رو به صورت زیر مقداردهی میکنم :

     
    #define MAX_KEY_LENGTH 255
    .
    .
    .

    DWORD dwWord;
    TCHAR achKey[MAX_KEY_LENGTH];
    int i=0;
    while((m_cKey.EnumKey(i,achKey,&dwWord,NULL))!=ERR OR_NO_MORE_ITEMS)
    i++;

    در msdn اینطوری اومده :

    To enumerate the subkeys, call CRegKey::EnumKey with an index of zero. Increment the index value and repeat until the method returns ERROR_NO_MORE_ITEMS.

    خوب من هم دقیقا همین کار رو میکنم اما نمیدونم چرا تابع همیشه عدد 259 رو برمیگردونه ؟
    لطفا راهنمایی در مورد شمردن کلیدها بدید و بگید باید دقیقا چکار کنم ؟ ضمنا من کلیدها رو در سازنده کلاس create میکنم و در دفعات بعدی اجرا این تابع اونها رو باز میکنه و در مخرب هم کلید ها رو می بندم .

    با تشکر

  2. #2
    پارامتر سوم تابع EnumKey علاوه بر این که خروجی هست، ورودی نیز می باشد یعنی تعداد کارکتر های مجاز ورودی رشته شما در آرگومان دوم به TCHAR باید در آن قرار داشته باشد، پس باید مقدار اولیه داشته باشد:

    DWORD dwWord = MAX_KEY_LENGTH;
    // ...
    سپس می توانید در هر مرحله تست کنید تا ببینید چند کارکتر در رشته نوشته شده است.

  3. #3
    سلام
    با عرض پوزش از طرح سوالم در این قسمت خواستم بدونم ذکر مطالب سایت در وبلاگها و محلهای دیگر اشکالی از نظر نویسندگان و یا اشکالی شرعی دارد؟یا خیر؟
    با تشکر

  4. #4
    نقل قول نوشته شده توسط Sadat_IT مشاهده تاپیک
    سلام
    با عرض پوزش از طرح سوالم در این قسمت خواستم بدونم ذکر مطالب سایت در وبلاگها و محلهای دیگر اشکالی از نظر نویسندگان و یا اشکالی شرعی دارد؟یا خیر؟
    با تشکر
    جای درست این سوال اینجا نبود و باید در بخش پیشنهادات و نظرات مطرح می شد ،

    در هر حال بستگی به مطلب و موضوع دارد، در صورتی که نویسنده راضی باشد با ذکر منبع و نام نویسنده بلا مانع است.

  5. #5

    Smile

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

  6. #6
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    اگه بیشتر توضیح بدید ممنون میشم :
    من مجبور شدم در مثال پست قبل از حلقه while استفاده کنم چون که برای استفاده از حلقه For نمی دونستم که در مقدار شرط چه چیزی رو قرار بدم .
    در msdn یک مقدار به نام cSubKeys که نوعش DWORD و یکبار در تابع RegQueryInfoKey استفاده شده را در یک حلقه برای پایان دادن به آن استفاده کرده است . می خواستم بدونم که این مقدار دقیقا چیه ؟ و اگه ممکنه با یک مثال توضیح بدید . با تشکر

  7. #7
    یک راه استفاده از RegQueryInfoKey و سپس بدست آوردن تعداد subkey های کلید مورد نظر شما است یعنی index آخرین زیر کلید، که همانطوری که خودتان می دانید در MSDN مثال آن وجود دارد و نیازی به تکرار آن نیست.

    روش دیگر هم همان حلقه while هست که انجام دادید ، ابتدا کاری را که در پست قبل گفتم انجام دهید و توجه داشته باشید که در هر مرحله از حلقه که ERROR_SUCCESS می گیرید نام یک subkey را در رشته خود دریافت می کنید که باید آن ها را در جای دیگری کپی کنید و یا مستقیم نمایش دهید که این کار را نکردید.

    اگر هنوز هم جواب نمی دهد ، خودتان باید بررسی کنید که رجیستری باز شده درست انجام شده باشد.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •