PDA

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



programmermp
شنبه 02 دی 1385, 10:57 صبح
با سلام

چطوری می شه یک مقداری که در تکست باکس هست رو به عنوان یک مقدار در رجیستری

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

بریزی

با تشکر

مهدی نان شکری
شنبه 02 دی 1385, 11:52 صبح
با سلام
برای این منظور باید از Microsoft.Win32 استفاده کنید. یه مثال کوچکی نوشتم. شاید مشکلتون رو حل کنه.

zarrin_306
شنبه 02 دی 1385, 11:53 صبح
Private Sub btn_Click(...) Handles btn.Click
If txt.Text.Trim <> "" Then lst.Items.Add(txt.Text.Trim)
End Sub

Private Sub Form1_Load(...) Handles MyBase.Load
Dim Num As Integer = GetSetting(Application.ExecutablePath, "List Box (It can be anything else)", _
"List Box Count (It can be anything else)", 0)
For i As Integer = 0 To Num - 1
lst.Items.Add(GetSetting(Application.ExecutablePat h, "ListBox Items (It can be anything else)", _
"Item " & i, 0))
Next
End Sub

Private Sub Form1_Closed(...) Handles MyBase.Closed
'Saving the number of Items in the List box :
SaveSetting(Application.ExecutablePath, "List Box (It can be anything else)", _
"List Box Count (It can be anything else)", lst.Items.Count)
'Saving each item :
For i As Integer = 0 To lst.Items.Count - 1
SaveSetting(Application.ExecutablePath, "List Box Items (It can be anything else)", _
"Item " & i, lst.Items.Item(i))
Next
End Sub

programmermp
شنبه 02 دی 1385, 12:00 عصر
با سلام و تشکر

zarrin جان می شه مثال رو یک خورده جامع تر بنویسی یعنی مقدار دهی بشه

من متوجه نشدم چطوری مقدار رو توی رجیستری می نویسه یا می خونه

با تشکر

zarrin_306
یک شنبه 03 دی 1385, 11:20 صبح
دیگه برادر من دیگه از این جامع تر
ولی یه توضیح مختصر

اولا که هرجا List box بود رو به Textbox ویا نام تبدیلی آن تغییر بده

دوم اینکه
در قسمت


Dim Num As Integer = GetSetting(Application.ExecutablePath, "List Box (It can be anything else)", _
"List Box Count (It can be anything else)", 0)
For i As Integer = 0 To Num - 1
lst.Items.Add(GetSetting(Application.ExecutablePat h, "ListBox Items (It can be anything else)", _
"Item " & i, 0))
Next


از GetSetting برای بارگذاری هستش که باید در جایی که میخوای مطلب رو ازرجیستری بخونی قرار بدی

سوم اینکه



'Saving the number of Items in the List box :
SaveSetting(Application.ExecutablePath, "List Box (It can be anything else)", _
"List Box Count (It can be anything else)", lst.Items.Count)
'Saving each item :
For i As Integer = 0 To lst.Items.Count - 1
SaveSetting(Application.ExecutablePath, "List Box Items (It can be anything else)", _
"Item " & i, lst.Items.Item(i))
Next

از SaveSetting برای ذخیره مطالب در رجیستری میباشه

وقسمت اول هم که مشخصه برای پرکردن List box میباشد که اگر Textbox خالی نباشد عنوان را به Listbox میافزاید
که شما به این قسمت نیاز ندارید چرا که شما ایتم های لیست باکس و یا کمبوباکس را ذخیره نمیکنید

programmermp
پنج شنبه 21 دی 1385, 12:45 عصر
با سلام

اقا این کلید هایی که ایجاد می کنه در رجیستری از نوع (دستورهای بالا) از نوع string هست

حالا اگه من بخواهم یک کلید از نوع dword یا binary یا از نوع های دیگه ایجاد کنم چکار باید

بکنم

با تشکر

Sub Zero
پنج شنبه 21 دی 1385, 14:24 عصر
اگه من بخواهم یک کلید از نوع dword یا binary یا از نوع های دیگه ایجاد کنم چکار باید کنم
ببین دوست عزیز از Savesetting و Getsetting عموما برای ذخیره مشخصات برنامه استفاده می شه شما حتی نمیتونی مسیر بهش بدی که کجا مقادیر رو ذخیره کنه چون خودش مسیر پیش فرض داره
برای کاری که شما میخواید انجام بدید بهتره از این مثال استفاده کنید .

Imports System
Imports Microsoft.Win32
Imports Microsoft.VisualBasic

Public Class Example
Public Shared Sub Main()
' Delete and recreate the test key.
Registry.CurrentUser.DeleteSubKey("RegistryValueKindExample", False)
Dim rk As RegistryKey = Registry.CurrentUser.CreateSubKey("RegistryValueKindExample")

' Create name/value pairs.
' This overload supports QWord (long) values.
rk.SetValue("QuadWordValue", 42, RegistryValueKind.QWord)

' The following SetValue calls have the same effect as using the
' SetValue overload that does not specify RegistryValueKind.
'
rk.SetValue("DWordValue", 42, RegistryValueKind.DWord)
rk.SetValue("MultipleStringValue", New String() {"One", "Two", "Three"}, RegistryValueKind.MultiString)
rk.SetValue("BinaryValue", New Byte() {10, 43, 44, 45, 14, 255}, RegistryValueKind.Binary)
rk.SetValue("StringValue", "The path is %PATH%", RegistryValueKind.String)
End Class 'Example