PDA

View Full Version : خواندن و نوشتن در رجیستری



012132
جمعه 27 اردیبهشت 1392, 23:18 عصر
با سلام . من می خوام یک کلید رجیستری رو که توی هر کامپیوتر متفاوت هست رو بخونم .

اینم مسیرش : [HKEY_LOCAL_MACHINE\SYSTEM\WPA\Key-CJ27J3P2XV9J9JCPB4DVT]

همونطور که گفتم این کد Key-CJ27J3P2XV9J9JCPB4DVT در هر کامپیوتری دارای مقدار متفاوت هست اما تنها قسمت مشترک آن در همه کامپیوتر ها سه حرف اول آن یعنی حروف key هستش . حالا می خوام بدونم آیا میشه توی سی شارپ بیام همه ی این مسیر رو بخونم و بعد بیام یک مقدار به اسم ProductID که توی همین Key-CJ27J3P2XV9J9JCPB4DVT هست رو بخونم .

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

danialafshari
شنبه 28 اردیبهشت 1392, 00:38 صبح
سلام
با این کد که براتون نوشتم می تونی مسیر رو پیدا کنی و باقیش راحته

danialafshari
شنبه 28 اردیبهشت 1392, 09:26 صبح
اگر چیزی نشون نداد مطمئنن key وجود ندارد برای تست به شاخه بروید و اول نام یکی از sub ها رو در برنامه کپی کنید و میبینید که در textbox میاد

012132
شنبه 28 اردیبهشت 1392, 13:14 عصر
خیلی ممنون danialafshari . فعلاً اسم اون subkey رو توی textbox نشون میده .

یه مشکل کوچیک دیگه هم دارم اینکه چطور مقدار موجود توی ProductID رو برگردونم ؟

esafb52
شنبه 28 اردیبهشت 1392, 13:21 عصر
یه متد بنویس که یه رشته برگردونه و با substring (اگه میخوای ProductID)رو از تو اون رشته در بیاری کار کن

danialafshari
شنبه 28 اردیبهشت 1392, 15:08 عصر
خوشحال میشدیم خودتون هم یک تلاش می کردید
این کد رو در ادامه برای دریافت اطلاعات بنویسید
RegistryKey key = Registry.LocalMachine.OpenSubKey("SYSTEM\\WPA\\"+textBox1.Text.Trim(), true);
MessageBox.Show(key.GetValue("ProductID").ToString());

بین textBox1 ادیتور سایت فاصله انداخته شما تصحیح کنید

012132
شنبه 28 اردیبهشت 1392, 16:46 عصر
خیلی ممنون از راهنماییتون .

csharpdoost
شنبه 28 اردیبهشت 1392, 16:57 عصر
دوستان بنده این کد رو روی xp اجرا کردم جواب میده اما روی سون طبق تصویر زیر کد میده که خبری از کلمه key هم نیستو ظاهرا منحصر بفرد هم نیست. راه دیگه ای هست؟
104344

danialafshari
شنبه 28 اردیبهشت 1392, 17:13 عصر
دوستان بنده این کد رو روی xp اجرا کردم جواب میده اما روی سون طبق تصویر زیر کد میده که خبری از کلمه key هم نیستو ظاهرا منحصر بفرد هم نیست. راه دیگه ای هست؟
روی سیستم من هم key وجود نداره و چیزی که دوستمون خواستن رو فقط انجام دادم
csharpdoost حالا استفاده شما از این چیه؟

csharpdoost
شنبه 28 اردیبهشت 1392, 17:18 عصر
میخوام اگه کد منحصر بفردی روی سیستم هست برای ثبت نرم افزارهای خودم استفاده کنم و با توجه به اون کد به شخص کد دیگه ای بدم که برنامه خودم رو بتونه روی سیستمش نصب کنه. البته این رو میدونم که میشه کدهای سخت افزاری cpuو . . . دیگه رو بیرون کشید و برا اساس اونها بهشون کد داد . اما بنده نمیدونم چطوری بنویسم. اگه میتونید راهنماییم کنین ممنون

012132
شنبه 28 اردیبهشت 1392, 17:55 عصر
اتفاقاً key وجود داره فقط باید این کار را توی کد انجام بدی :
بجای

where n.Contains("Key")
باید

where n.Contains("Key-")
بنویسی . بعد میبینی که اون کد رو برات میاره

csharpdoost
شنبه 28 اردیبهشت 1392, 19:51 عصر
اتفاقاً key وجود داره فقط باید این کار را توی کد انجام بدی :
بجای

where n.Contains("Key")
باید

where n.Contains("Key-")
بنویسی . بعد میبینی که اون کد رو برات میاره

بله در xp اون keyرو میده حتی بدون '-' . ولی در سون چندین key رو میده. نمیدونم فقط تو سیستم من اینجوریه؟ یا همه اینطوریه؟:متعجب:

danialafshari
شنبه 28 اردیبهشت 1392, 21:07 عصر
میخوام اگه کد منحصر بفردی روی سیستم هست برای ثبت نرم افزارهای خودم استفاده کنم و با توجه به اون کد به شخص کد دیگه ای بدم که برنامه خودم رو بتونه روی سیستمش نصب کنه. البته این رو میدونم که میشه کدهای سخت افزاری cpuو . . . دیگه رو بیرون کشید و برا اساس اونها بهشون کد داد . اما بنده نمیدونم چطوری بنویسم. اگه میتونید راهنماییم کنین ممنون

خیلی که بحث شده !
کد زیر یک تابع هست که کد cpu رو برمیگردونه
public string GetCPUId()
{
string cpuInfo = String.Empty;
//create an instance of the Managemnet class with the
//Win32_Processor class
ManagementClass mgmt = new ManagementClass("Win32_Processor");
//create a ManagementObjectCollection to loop through
ManagementObjectCollection objCol = mgmt.GetInstances();
//start our loop for all processors found
foreach (ManagementObject obj in objCol)
{
if (cpuInfo == String.Empty)
{
// only return cpuInfo from first CPU
cpuInfo = obj.Properties["ProcessorId"].Value.ToString();
}
}
return cpuInfo;
}
حالا می تونی این کد رو در یک آرایه قرار بدی و برای تک تک اندیس های آرایه یک عدد معرفی کنی مثلا اگر اندیس 0 شد F قطعه کد تو تبدیلش کنه به 4

csharpdoost
شنبه 28 اردیبهشت 1392, 22:41 عصر
ممنون دوست عزیز این کدها و کدهای بسیار دیگری پیدا کردم. اما کدی که در بالا مطرح بود جالب تر بود. کسی میدونه این کد منحصر بفرد که با کدهای بالا بدست میومد بر اساس چه چیزی هستش. ؟ و اگر ویندوز یک سیستم عوض بشه این کد دوباره تولیدمیشه یا اینکه کد تغییر میکنه؟

danialafshari
یک شنبه 29 اردیبهشت 1392, 00:43 صبح
ممنون دوست عزیز این کدها و کدهای بسیار دیگری پیدا کردم. اما کدی که در بالا مطرح بود جالب تر بود. کسی میدونه این کد منحصر بفرد که با کدهای بالا بدست میومد بر اساس چه چیزی هستش. ؟ و اگر ویندوز یک سیستم عوض بشه این کد دوباره تولیدمیشه یا اینکه کد تغییر میکنه؟

من که عرض کردم
کد زیر یک تابع هست که کد cpu رو برمیگردونه کد CPU هست و همیشه یکتاس

csharpdoost
یک شنبه 29 اردیبهشت 1392, 09:08 صبح
من که عرض کردم کد CPU هست و همیشه یکتاس
منظورم همون کدی که خودتون آپ کردید نه کد cpu. این کدی که آپ کردید کد چی هست؟ و اگه ویندوز یک سیستم عوض بشه این کد دوباره تولیدمیشه یا اینکه کد تغییر میکنه؟

danialafshari
یک شنبه 29 اردیبهشت 1392, 12:10 عصر
منظورم همون کدی که خودتون آپ کردید نه کد cpu. این کدی که آپ کردید کد چی هست؟ و اگه ویندوز یک سیستم عوض بشه این کد دوباره تولیدمیشه یا اینکه کد تغییر میکنه؟


ای بابا
کدی که من گذاشتم کد cpu هست و با تعویض ویندوز هم تغییر نمیکنه و همیشه ثابته !

csharpdoost
یک شنبه 29 اردیبهشت 1392, 12:54 عصر
ای بابا
کدی که من گذاشتم کد cpu هست و با تعویض ویندوز هم تغییر نمیکنه و همیشه ثابته !
دوست عزیز کدی که نوشتید توی ریجستری کد cpuهستش؟ کدی که تو پست 13 نوشتید کد cpu هس. بعید میدونم کد ریجستری که نوشتید کد cpu باشه!!!