PDA

مشاهده نسخه کامل : ايجاد سريال



softsoft
10-08-11, 17:31
سلام
من يك متن ورشته دارم . ميخوام اونو تبديل به شماره سريال كنم .
ميشه كمك كنيد.
خواهشا vb.net

ravegoat
10-08-11, 18:10
سلام!

سوال شما از نظر بنده گنگ هست. لطفا" موارد زير رو تعيين كنيد تا بهتر بشه شما رو راهنمايي كرد؟



فرق رشته ي مورد نظر شما با متن در چي هست؟
آيا طول متن و طول رشته (كه هنوز نمي دونم تفاوتشون چيه!) ثابت هست يا تغيير مي كنه؟
شماره سريال خروجي (يا شايد رشته ي خروجي!) شما بايد شامل چه كاركتر هايي باشه و شامل چه كاركتر هايي نباشه؟ (مثلا" فقط بايد شامل عدد باشه؟)
طول شماره سريال بايد ثابت باشه يا مي تونه تغيير كنه و يا با بستگي به طول رشته ي ورودي داره؟ (مثلا" در هر صورتي بايد 32 كاركتر باشه؟)
آيا فرآيند تبديل رشته ها بايد به صورت يكطرفه صورت بگيره؟ به عبارت ديگه نشه شماره سريال رو به رشته ي ورودي تبديل كرد.

آرمين

softsoft
11-08-11, 18:57
راستش من یمخاوم برای برنامه ام شماره سریال 15 روزه بزارم .
به خاطر همین گفتم .
مثلا شماره یریال فیزیکی هارد رو دارم و از روش سریال بسازم .
یه چیز دیگه که مثلا برنامه ۳۰ روزه باشه . روز شمار داشته باشه و نشون بده که چند روز باقی مانده . و اینکه بعد از حذف و نصب برنامه این تعداد روز ها از دست نره

ravegoat
13-08-11, 11:56
در مورد بخش اول سوالتون مي تونيد از سورس هاي زير استفاده كنيد:

Only the registered members can see the link

Only the registered members can see the link

Only the registered members can see the link

در مورد بخش دوم سوالتون فعلا" ايده اي ندارم!

موفق باشيد
آرمين

softsoft
14-08-11, 18:26
مرسی خیلی خوب بود

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

'Return a hardware identifier
Private Overloads Shared Function identifier(ByVal wmiClass As String, ByVal wmiProperty As String, ByVal wmiMustBeTrue As String) As String
Dim result As String = ""
Dim mc As New System.Management.ManagementClass(wmiClass)
Dim moc As System.Management.ManagementObjectCollection = mc.GetInstances()
Dim mo As System.Management.ManagementObject
For Each mo In moc
If mo(wmiMustBeTrue).ToString() = "True" Then
'Only get the first one
If result = "" Then
Try
result = mo(wmiProperty).ToString()
Exit For
Catch
End Try
End If
End If
Next mo
Return result
End Function 'identifier
'Return a hardware identifier
Private Overloads Shared Function identifier(ByVal wmiClass As String, ByVal wmiProperty As String) As String
Dim result As String = ""
Dim mc As New System.Management.ManagementClass(wmiClass)
Dim moc As System.Management.ManagementObjectCollection = mc.GetInstances()
Dim mo As System.Management.ManagementObject
For Each mo In moc
'Only get the first one
If result = "" Then
Try
result = mo(wmiProperty).ToString()
Exit For
Catch
End Try
End If
Next mo
Return result
End Function 'identifier
Private Shared Function cpuId() As String
'Uses first CPU identifier available in order of preference
'Don't get all identifiers, as very time consuming
Dim retVal As String = identifier("Win32_Processor", "UniqueId")
If retVal = "" Then 'If no UniqueID, use ProcessorID
retVal = identifier("Win32_Processor", "ProcessorId")
If retVal = "" Then 'If no ProcessorId, use Name
retVal = identifier("Win32_Processor", "Name")
If retVal = "" Then 'If no Name, use Manufacturer
retVal = identifier("Win32_Processor", "Manufacturer")
End If
'Add clock speed for extra security
retVal += identifier("Win32_Processor", "MaxClockSpeed")
End If
End If
Return retVal
End Function 'cpuId

'BIOS Identifier
Private Shared Function biosId() As String
Return identifier("Win32_BIOS", "Manufacturer") + identifier("Win32_BIOS", "SMBIOSBIOSVersion") + identifier("Win32_BIOS", "IdentificationCode") + identifier("Win32_BIOS", "SerialNumber") + identifier("Win32_BIOS", "ReleaseDate") + identifier("Win32_BIOS", "Version")
End Function 'biosId
'Main physical hard drive ID
Private Shared Function diskId() As String
Return identifier("Win32_DiskDrive", "Model") + identifier("Win32_DiskDrive", "Manufacturer") + identifier("Win32_DiskDrive", "Signature") + identifier("Win32_DiskDrive", "TotalHeads")
End Function 'diskId

'Motherboard ID
Private Shared Function baseId() As String
Return identifier("Win32_BaseBoard", "Model") + identifier("Win32_BaseBoard", "Manufacturer") + identifier("Win32_BaseBoard", "Name") + identifier("Win32_BaseBoard", "SerialNumber")
End Function 'baseId

'Primary video controller ID
Private Shared Function videoId() As String
Return identifier("Win32_VideoController", "DriverVersion") + identifier("Win32_VideoController", "Name")
End Function 'videoId

'First enabled network card ID
Private Shared Function macId() As String
Return identifier("Win32_NetworkAdapterConfiguration", "MACAddress", "IPEnabled")
End Function 'macId

فقط توی رفرنس اینم لود کن :

System.Management

یه سوال دیگه هم داشتم که گفتم الکی یه پست بخاطرش درست نکنم :
من میخواستم یه کاری کنم که فرم برنامه یه قسمتی از دسکتاپ بشه .
مثلا اگه روش کلیک راست شد انگار روی دسکتاپ کلیک راست کردیم . و فوکوس نگیره فرم و همیشه روی دسکتاپ باشه .
خلاصه می خوام جزیی از دسکتاپ بشه

ravegoat
14-08-11, 20:00
سورسي كه قرار داديد اطلاعات سخت افزار (پردازنده، BIOS، ديسك سخت، كارت گرافيك و كارت شبكه) رو بر مي گردونه و بنابراين با تغيير ويندوز، اين مقادير تغيير نخواهد كرد.

در مورد سوال دوم:
فكر نكنم خيلي راحت بشه اين كار رو كرد چون مديريت پنجره ها و برخي خواص اون ها تا حد زيادي وابسته به اكسپلورر ويندوز هست. ميشه با Transparent كردن فرم به اين هدف رسيد ولي فكر نكنم مد نظر شما باشه.
راهي كه به ذهنم ميرسه اينكه شما رويداد هايي رو كه مي خواهيد به دسكتاپ نسبت بديد بايد اول روي خود فرم تشخيص بديد و بعد اون رو به دسكتاپ منتقل كنيد. مثلا" اگه روي فرم شما كليك راست شد، شما بايد در رويداد MouseClick فرم ابتدا از باز شدن منوي كليك راست ممانعت كنيد و بعد با API ويندوز، منوي كليك راست مربوط به دسكتاپ رو نمايش بديد. البته من اين راه رو امتحان نكردم! اگه چيز تازه اي به دست آوردم در اختيارتون مي ذارم.

موفق باشيد
آرمين

softsoft
17-08-11, 17:33
پس میتونم از این ها برای ساخت سریال منحصر به فرد برای هر سیستم استفاده کنم و تغییر نمیکنه .
شما این پروژه vb6 رو ببینید که اون قابلیتی رو که من گفتم داره ولی نتونسم از توش در بیارم و تبدیلش به vb.net کنمش.
کلن پروژه ی خوبیه ولي vb6

softsoft
23-08-11, 14:50
دیدی فایل رو؟
چیزی دستگیرت شد؟

softsoft
02-09-11, 16:18
سلام.
اون کد سی شارپ رو که گذاشته بودم میتونی تبدیل به وی بی کنی .
اون فایل رو هم که گذاشتمو دیدی ؟
خیلی گیرم .اگه لطف کنی یکم سریع جواب بده.

™Ali
03-09-11, 00:03
سلام.
اون کد سی شارپ رو که گذاشته بودم میتونی تبدیل به وی بی کنی .
اون فایل رو هم که گذاشتمو دیدی ؟
خیلی گیرم .اگه لطف کنی یکم سریع جواب بده.

(Only the registered members can see the link)برنامه های تبدیل کننده کد از انواع زبان های برنامه نویسی! (Only the registered members can see the link)

softsoft
03-09-11, 12:18
ممنون ؛ من یکی داشتم ولی یه قسمتشو خوب تبدیل نکرد ؛ یه نگاه بهش بنداز

™Ali
03-09-11, 13:41
ممنون ؛ من یکی داشتم ولی یه قسمتشو خوب تبدیل نکرد ؛ یه نگاه بهش بنداز

خب اون قسمت رو دستی خودتون کدنویسی کنید.

softsoft
04-09-11, 15:11
امتحان کردم . ولی نتونستم .
حالا شما یه نگاه بنداز ببین می تونی

ravegoat
04-09-11, 21:54
سورس مورد نظر (Only the registered members can see the link) تبديل و كلاس مربوطه پيوست شده.

آرمين

softsoft
14-09-11, 20:32
سلام
من میخوام برای گذاشتن تعداد روز های فعال برنامه یه فایل درست کنم که توش تاریخ نصب و تاریخ غیر فعال شدن برنامه رو بزارم و
تعداد روز های باقی مانده . و به همین دلیل این فایل باید رمزگزاری شده باشه و یه جوری باشه که کسی نتونه توش دست ببره و عوض
کنه اطلاعاتش رو .
به نظرتون چی کار میشه کرد ؟

ravegoat
21-09-11, 17:44
سلام
من میخوام برای گذاشتن تعداد روز های فعال برنامه یه فایل درست کنم که توش تاریخ نصب و تاریخ غیر فعال شدن برنامه رو بزارم و
تعداد روز های باقی مانده . و به همین دلیل این فایل باید رمزگزاری شده باشه و یه جوری باشه که کسی نتونه توش دست ببره و عوض
کنه اطلاعاتش رو .
به نظرتون چی کار میشه کرد ؟
با سلام!

دوست عزيز شما مي تونيد تاريخ هاي مورد نظر خودتون رو درون يك فايل قرار بديد و بعد اون فايل رو توسط الگوريتمي مثل DES با يك كليد رمزنگاري كنيد. در اين صورت محتويات اين فايل زماني قابل رويت ميشه كه فايل با همون كليد از رمز در بياد. مسلما" اين كليد بايد از چشم كاربران پنهان بمونه. اگر كاربري هم بدون داشتن كليد قصد ويرايش فايل رمز شده رو داشته باشه، تنها باعث ميشه ساختار فايل به هم بريزه و ديگه قابل خوندن نباشه. برنامه ي شما هم بايد به گونه اي باشه كه اگه نتونست فايل رو بخونه، ليسانس برنامه رو منقضي كنه (با استفاده از بلوك Try Catch).
براي اطلاعات بيش تر به لينك هاي زير مراجعه كنيد:

Only the registered members can see the link
Only the registered members can see the link

موفق باشيد
آرمين

softsoft
26-09-11, 18:46
خیلی خیلی ممنون.
به نظر شما این فایل رو در چه محلی ذخیره کنم بهتر ه ؟

ravegoat
26-09-11, 21:03
خواهش مي كنم.

نمي تونم يه نظر قطعي در اين زمينه بدم اما قاعدتا" محل قرارگيري اين فايل بايد در يك مسير كلي باشه مانند زير شاخه هاي ويندوز نظير System32 ، شاخه ي Program Files و يا Documents and Settings زيرا اين شاخه ها به صورت پيش فرض در تمام ويندوز ها موجود هستد. شايد System32 گزينه ي مناسبي باشه چون حجم زيادي از فايل ها و پوشه ها رو در بر مي گيره. براي دستيابي به ساير اين پوشه ها مي تونيد از كد زير استفاده كنيد:




My.Computer.FileSystem.SpecialDirectories

مثلا" كد زير مسير All Users رو برمي گردونه:



My.Computer.FileSystem.SpecialDirectories.AllUsers ApplicationData


موفق باشيد
آرمين

softsoft
28-09-11, 16:24
بازم ممنون . واقعا ممنون که بدون هیچ چشم داشتی کمک می کنید .
به نظرتون اگه فایل Hidden بشه بهتر نیست ؟
یا اینکه اصلا میشه Read Only کردش ؟
میشه بگید چه جوری؟
به نظر منم همون مسیر System32 بهتره . حالا مسیر این رو چه جوری به دست بیارم ؟ میشه مسیر ویندوز رو به دست آورد و بعدش یه System32/ گذاشت .
یه چیز دیگه که می خوام اول چک کنم آیا فایل مورد نظر وجود داره یا نه که اگه وجود داشت بعدش اطلاعات رو ازش بخونم .

راستی یادتوه یه فایل C# گذاشتم که اطلاعات هارد و مادر برد و اینجور چیزارو میگرفت و به سریال تبدیل میکرد ؟
میخواستم ببینم میشه همون سریال تولید شده رو دوباره به همون اطلاعات هارد و مادر برد و ... برگردوند ؟

ravegoat
28-09-11, 22:08
خواهش مي كنم...

با توجه به نياز شما مخفي كردن، فقط خواندني كردن و حتي سيستمي كردن (System) اين فايل فكر خوبي مي تونه باشه.

كد زير با دستور Exist از مجموعه ي System.IO.File بررسي مي كنه كه آيا فايل MyFile.dat در مسير System32 وجود داره يا نه؟ اگه وجود داشته باشه، محتويات فايل رو به صورت بايت و متني مي خونه. اگر اين فايل وجود نداشته باشه با دستور Create چنين فايلي رو ايجاد مي كنه و با دستور SetAttributes، فايل رو به صورت مخفي، سيستمي و فقط خواندني در مياره.





If System.IO.File.Exists("\Windows\System32\MyFile.dat") Then
'Return the file content in byte:
System.IO.File.ReadAllBytes("\Windows\System32\MyFile.dat")
'Return the file content in text:
System.IO.File.ReadAllText("\Windows\System32\MyFile.dat")
Else
'File creation:
System.IO.File.Create("\Windows\System32\MyFile.dat")
'Set the file attributes (Hidden, System and ReadOnly):
System.IO.File.SetAttributes("\Windows\System32\MyFile.dat", IO.FileAttributes.Hidden)
System.IO.File.SetAttributes("\Windows\System32\MyFile.dat", IO.FileAttributes.System)
System.IO.File.SetAttributes("\Windows\System32\MyFile.dat", IO.FileAttributes.ReadOnly)
End If


در واقع \Windows\System32 بيان گر مسير System32 هست.

در مورد سوال آخر هم آره يادمه...در اون كد از MD5 استفاده شده كه يك رمز نگاري يكطرفه هستش. در نتيجه وقتي شما مشخصات سخت افزار رو با اون سورس به يك شماره شريال تبديل كنيد ديگه نميشه اون شماره سريال رو به اطلاعات سخت افزاري تبديل كرد.

موفق باشيد
آرمين

softsoft
08-10-11, 17:21
سلام .ببخشید بازم مزاحم شدم .
یه سوال پیش اومد . مثلا ما برای برنامه ۳۰ رو وقت گذاشتیم . حالا یکی تو این این ۳۰ روز اومد و برنامه رو فعال کرد . حالا چیکار کنیم که دیگه برنامه چک نکنه که چه قدر از این ۳۰ روز باقی مونده و بفهمه که برنامه فعال شده . اون فایل قبلی هم که فقط خوندنی و سیستمی شده بود و فکر نکنم بشه توش تغییر ایجاد کرد بعد فعال سازی .
به نظرم باید بعد فعال سازی یه فایل دیگه شبیه همون درست کنیم و برنامهدبعد اجرا چک کنه که آیا این فایل دومی وجود داره یا نه و اگه وجود داشت یعنی برنامه فعاله .
نمیدونم. نظر شما چیه . بهترین کار چی میتونه باشه .

ravegoat
08-10-11, 20:45
سلام!

خواهش مي كنم...

نكته ي اول اينه كه براي برگردوندن خواص يك فايل به حالت عادي به طور كه بشه مجددا" محتويات اون رو ويرايش كرد مي تونيد از دستور زير استفاده كنيد:



System.IO.File.SetAttributes("\Windows\System32\MyFile.dat", 128)

كه عبارت قرمز شده بيان گر مسير فايل مورد نظر هستش.

بنده نمي تونم بيان كنم چه راه حلي بهترينه! شما مي تونيد به محض فعال سازي برنامه، شماره سريال رو درون فايل قبلي و يا به گفته ي خودتون يك فايل جديد به صورت متني ذخيره كنيد. سپس قبل از نمايش پيغام 30 روزه مي تونيد با دستور شرطي دو مورد رو چك كنيد:
1-آيا در صورت استفاده از يه فايل جديد، اون فايل وجود داره؟
2-در صورت وجود اون فايل آيا شماره سريال موجود در فايل معتبر است؟

در صورتي كه شروط فوق برقرار مي تونيد ديگه نيازي به نمايش پيغام 30 روزه اي نيست.

براي نوشتن در يك فايل مي تونيد از دستور زير استفاده كنيد:



System.IO.File.WriteAllText("\Windows\System32\MyFile.dat","Serial Number" )
عبارت Serial Number مقداري است كه در فايل نوشته مي شود.

عبارت شرطي زير هم بررسي مي كنه كه آيا محتويات فايل برابر با رشته ي فرضا" Serial Number هستش يا نه؟ :



If System.IO.File.ReadAllText("\Windows\System32\MyFile.dat") <> "Serial Number" Then
MsgBox("Invalid Serial Number")
End If

موفق باشيد
آرمين

softsoft
22-10-11, 21:58
سلام
بازم مزاحم شدم
من اون فایل اولی رو درست کردم . و قرار شد برای اینکه معلوم بشه که فعال شده یا نه یه فایل دیگه هم درست کنم . حالا وقتی که می خوام فایل رو درست کنم . تقریبا از کد زیر استفاده می کنم .

System.io.file.create(mASIR)

System.io.file.writealltext(masir,matn)

ولی این پیغام خطا رو میده و در نهایت فایل درست نمیشه . چیکار کنم که این مشکل دیگه به وجود نیاد .


The processmcannot access the file 'masir' because it is being used by another processs.

ravegoat
22-10-11, 22:45
سلام!

خواهش مي كنم.

بايد كد رو به صورت زير اصلاح كنيد.




ُSystem.IO.File.Create(masir).Close()
System.IO.File.WriteAllText(masir, matn)




با اضافه كردن فرمان Close بعد از فرمان Create مشكل حل ميشه.

موفق باشيد
آرمين

softsoft
02-03-12, 18:32
سلام!

خواهش مي كنم.

بايد كد رو به صورت زير اصلاح كنيد.




ُSystem.IO.File.Create(masir).Close()
System.IO.File.WriteAllText(masir, matn)




با اضافه كردن فرمان Close بعد از فرمان Create مشكل حل ميشه.

موفق باشيد
آرمين
سلام.اول از همه تشکر میکنم به خاطر تمام کمک ها و لطفتون.
راستش من ویندوز رو عوض کردم و وقتی همون کد ها رو اجرا میکنم از خط
System.io.file.create(”masir”).close()
خطا میگیره و میگه:
UnauthorizedAccessException was unhandle
Access to the path 'masir' is denied.
ممنون میشم اگه کمک کنید . چون اصلا نمیفهمم چرا اینطوری میشه.

ravegoat
03-03-12, 20:08
سلام...



System.IO.File.Create(masir).Close()
System.IO.File.WriteAllText(masir, matn)


منظورم از masir ، مسير مورد نظر شما جهت ايجاد فايل بود و منظورم از matn ، متني بود كه بايد داخل اون فايل ايجاد شده نوشته مي شد.

مثال:


System.IO.File.Create("C:\file.txt").Close()
System.IO.File.WriteAllText("C:\file.txt", "Hello")


اون خطا به اين خاطر بود كه نشاني "masir" ، يك مسير نا معتبر هستش.

موفق باشيد
آرمين

softsoft
06-03-12, 09:12
سلام...
اون خطا به اين خاطر بود كه نشاني "masir" ، يك مسير نا معتبر هستش.

موفق باشيد
آرمين
سلام. میدونم منظورتون از مسیر چی بود . چون یک بار برنامه رو کامل کردم با همون کد ها و اجرا کردم. مطمئنم کد رو درست نوشتم.
ولی در مورد مسیر . یعنی مسیر زیر در ویندوز ۷ نا معتبر هست.
C:/windows/system32/esmefile ba pasvand
اینم بگم ویندوزم ۶۴ بیتی هست. درک نمیکنم چرا این پیام خطا رو میده.

ravegoat
06-03-12, 17:01
سلام. میدونم منظورتون از مسیر چی بود . چون یک بار برنامه رو کامل کردم با همون کد ها و اجرا کردم. مطمئنم کد رو درست نوشتم.
ولی در مورد مسیر . یعنی مسیر زیر در ویندوز ۷ نا معتبر هست.
C:/windows/system32/esmefile ba pasvand
اینم بگم ویندوزم ۶۴ بیتی هست. درک نمیکنم چرا این پیام خطا رو میده.

بله...

خب خطاي مذكور در اغلب موارد به اين دليل هست كه شما اجازه ي دسترسي به اون مسير و يا اون فايل رو نداريد. يا شايد فايل مورد نظر ايجاد شده ولي از طريق يه پروسه ي ديگه در حال استفاده شدن است. يه بار خودتون سعي كنيد با استفاده از Explorer خود ويندوز در مسير System32 فايل مورد نظر رو ايجاد كنيد. اگه با خطا رو به رو شديد، سطح دسترسي لازم رو به برنامه ي خودتون بديد كه اميدوارم مشكل حل شه.
در ضمن فكر نكنم نسخه ي 64 بيتي در اين مورد مشكل خاصي ايجاد كنه.

موفق باشيد
آرمين

softsoft
08-03-12, 14:33
سلام. بازم خیلی خیلی ازتون ممنونم.
راستش من دستی تون فایل رو درست کردم و موقع کپی کردن تو مسیر کورد نظر چنین پیغامی آمد:
Destination folder access denied
---------------------------------------
You'll need to provide administrator permission to copy folder
--------------------------------------
که وقتی رو دکمه کانتی نیو کلیک میکنم کپی میشه.
من یوزرم ادمینستراتور هست.
دلیلش چیه و برای اینکه نیاز به کپی دستی نباشه باید چیکار کنم؟

ravegoat
08-03-12, 15:51
سلام. بازم خیلی خیلی ازتون ممنونم.
راستش من دستی تون فایل رو درست کردم و موقع کپی کردن تو مسیر کورد نظر چنین پیغامی آمد:
Destination folder access denied
---------------------------------------
You'll need to provide administrator permission to copy folder
--------------------------------------
که وقتی رو دکمه کانتی نیو کلیک میکنم کپی میشه.
من یوزرم ادمینستراتور هست.
دلیلش چیه و برای اینکه نیاز به کپی دستی نباشه باید چیکار کنم؟

خواهش مي كنم...فكر مي كردم چنين مشكلي داشته باشه.

شما روي پوشه ي مورد نظر خودتون (كه فكر كنم System32 باشه) كليك راست كنيد و گزينه ي Properties رو انتخاب كنيد. بعد در پنجره ي باز شده به شاخه ي Security بريد و با كليك رو Edit نام كاربري مورد نظر خودتون رو كه برنامه تحت اون جرا ميشه وارد كنيد و سطح دسترسي رو Full Control كنيد. در آخر تغييرات رو تاييد نماييد. براي اطلاعات بيش تر به اين آموزش (Only the registered members can see the link) مراجعه كنيد.

موفق باشيد
آرمين