أعزائي ،
عند تحميل البرنامج يقوم بإلتقاط اسم المستخدم من الشبكة بواسطة الدالة GetUserName ، كيف لي الحصول على كلمة السر أيضاوالتحقق من صحتها
مع الشكر
أعزائي ،
عند تحميل البرنامج يقوم بإلتقاط اسم المستخدم من الشبكة بواسطة الدالة GetUserName ، كيف لي الحصول على كلمة السر أيضاوالتحقق من صحتها
مع الشكر
GetUserName هو win32 api للحصول على اسم المستخدم في الجهاز الذي يعمل عليه البرنامج.
هل تعني بالشبكة(عبر ال winsock ) ام LAN ؟
راكان الحنيطي
Be Open Source

أقصد "لان" حيث أن نسخة من البرنامج ستنصب على جهاز عميل متصل بالشبكة المحلية ومنضم الى الدومين
اخي بحثت لك عن طريقة لجلب كلمة السر لكنها مستحيلة لان ال microsoft حريصين على ان تكون محفوظة في ملف لا يعرفه احد.
لذا اقترح عمل database واستخدامها في البرنامج
راكان الحنيطي
Be Open Source

تمام ، يوجد جدول بقاعدة البيانات بإسم [mnuUsers] حيث يتوفر على أسماء المستخدمين مطابقة لأسماهم في الميدان بالإضافة الى حقل كلمة السر وهو على قاعدة بيانات ميكروسوفت سيكوال 2000 على جهاز الخادم الرئيسي .
مشكلتي أننى لم أعرف كتابة الجملة الصحيحة لفتح الجدول ومطابقة كلمة السر لنفس المستخدم .
مع الشكر
هذا امر ال SQL
"Select Password from mnuUsers where username = " & username.Text
راكان الحنيطي
Be Open Source

أنا كتبت التالي
Dim rst As Recordset
Set rst = "Select Password from cmdUsers where user = " & Me.txtUserName.Text
If rst!Pass = Me.txtPassword.Text Then
OK = True
Me.Hide
Else
MsgBox "Invalid Password, try again!", , "Login"
txtPassword.SetFocus
txtPassword.SelStart = 0
txtPassword.SelLength = Len(txtPassword.Text)
End If
هذا ماكتبته سابقا ولكن لم ينجح أى تعليق علماّ أن الجدول متص بواسطة بيئة بيانات (data environment) .
مع الشكر
لا اعرف لكن الا يجب ان يكون
RS.RecordSource = "select password from mnuusers where username = " & user.txt
لو سمحت فم بارفاق المشروع ؟
راكان الحنيطي
Be Open Source

أشكرك أخ راكان على المتابعة وأرجو لك التوفيق ، أنا مطور VBA بالدرجة الأولى وهذه أول مرة أكتب بها على vb 6 من حوالى 3 أيام . وقد توصلت الى الكود الصحيح بعد تفكير عميق وهو التالي
Option Explicit
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function apiGetComputerName Lib "kernel32" Alias _
"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public OK As Boolean
Public LoginSucceeded As Boolean
Private Sub cmdCancel_Click()
LoginSucceeded = False
Me.Hide
End Sub
Private Sub cmdOK_Click()
' Open connection.
strCnn = "PROVIDER=MSDASQL;dsn=SB SQL Server;uid=sa;pwd=;database=SBData;"
Set cnn1 = New ADODB.Connection
cnn1.Open strCnn
' Open users table.
Set rstUsers = New ADODB.Recordset
rstUsers.CursorType = adOpenKeyset
rstUsers.LockType = adLockOptimistic
rstUsers.Open "SELECT * FROM MenuUsers WHERE [user] = '" & strUserName & "'", cnn1, , adLockReadOnly
If Me.txtPassword = rstUsers!Pass Then
OK = True
Me.Hide
ElseIf Me.txtPassword <> rstUsers!Pass Then
MsgBox "Password you entered is incorrect.", vbInformation, "Health Insurance System"
SendKeys "{Home}+{End}"
Static intpswdcount
intpswdcount = intpswdcount + 1
If intpswdcount = 3 Then
MsgBox "Exiting the system!", vbInformation, "Health Insurance System"
Unload Me
End If
End If
rstUsers.Close
cnn1.Close
End Sub
Private Sub Form_Load()
Dim lngLen As Long, lngX As Long
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If lngX <> 0 Then
strUserName = Left$(strUserName, lngLen - 1)
Me.txtUserName = strUserName
Else
strUserName = ""
Me.txtUserName = ""
End If
lngLen = 16
strCompName = String$(lngLen, 0)
lngX = apiGetComputerName(strCompName, lngLen)
If lngX <> 0 Then
strCompName = Left$(strCompName, lngLen)
Me.txtMachine = strCompName
Else
strCompName = ""
Me.txtMachine = ""
End If
End Sub
لاحظ أن المشكلة كانت في الأقواس حول الحقل user حيث أنها لم تذكر في المحاولات السابقة وهى غير مطلوبة في vba الى فى حالات نادرة .
مع الشكر
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…