- Katılım
- 10 Ocak 2018
- Mesajlar
- 686
- Excel Vers. ve Dili
-
Microsoft Office 2024
Google Sheets
- Altın Üyelik Bitiş Tarihi
- 19-12-2026
Merhabalar
Ekteki örnek dosyada test makrosunu çalıştırınca windows şifresini giriyrsunuz. Doğrulama yaparak işlemlere devam ediyor.
Bu kodu eklediğim Z_GirişEkranı koduna entegre edebilirmisiniz?
Normalde doğrulama şu şekilde;
EĞER domain ile kullanıcı adı tutuyor ise çalışıyordu.
Ek olarak domain, kullanıcı adı ve şifre doğrulamasını
kullanıcıadı = LoginEkrani.TextBox1.Text
sifre = LoginEkrani.TextBox2.Text
If Domain = domain1 Or Domain = domain2 Then
If kullanıcıadı = Admin1 Or kullanıcıadı = Admin2 Or kullanıcıadı = Admin3 Or kullanıcıadı = LocalUser Then
If LogonUser(Environ("Username"), vbNullString, sifre, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, 0) <> 0 Then
kontrol = True
'MsgBox "Giriş Başarılı", vbInformation + vbOKOnly, "xProgramına Hoş Geldiniz"
eklemeye çalıştım olmadı.
*************************
İSTENİLEN
Altta bulunan kodda
Const domain1 = "XXX" 'PC Domaininiz, Const domain2 = " " 'PC Domaininiz eşit ise şifre girme ekranı açılacak, değil ise örneğin tüm exceller kapatılıp dosya silinsin.
Şifre girme ekranı açılırsa aşağıdaki şekilde giriş işlemleri devam edecek.
textbox1'e kullanıcı adı el ile yazılıyor.
textbox2'ye şifre yazılıyor. Doğru ise program açılıyor. Değil ise komple kapatılıyor.
Benim orjinal çalışmada
'If Domain = domain1 Or Domain = domain2 Then 'Domain sorgulaması
If kullanıcıadı = Admin1 Or kullanıcıadı = Admin2 Or kullanıcıadı = Admin3 Or kullanıcıadı = LocalUser Then 'Kullanıcı Adı
If LogonUser(Environ("Username"), vbNullString, sifre, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, 0) <> 0 Then 'Kullanıcı Şifre Doğrulaması
kontrol = True
Domaini sorguluyordu, kullanıcı adınıda girince doğru ise açılıyordu.
Burda sorguyu olmadığı için değiştirdim.
*************************
Ekteki örnek dosyada test makrosunu çalıştırınca windows şifresini giriyrsunuz. Doğrulama yaparak işlemlere devam ediyor.
Bu kodu eklediğim Z_GirişEkranı koduna entegre edebilirmisiniz?
Normalde doğrulama şu şekilde;
EĞER domain ile kullanıcı adı tutuyor ise çalışıyordu.
Ek olarak domain, kullanıcı adı ve şifre doğrulamasını
kullanıcıadı = LoginEkrani.TextBox1.Text
sifre = LoginEkrani.TextBox2.Text
If Domain = domain1 Or Domain = domain2 Then
If kullanıcıadı = Admin1 Or kullanıcıadı = Admin2 Or kullanıcıadı = Admin3 Or kullanıcıadı = LocalUser Then
If LogonUser(Environ("Username"), vbNullString, sifre, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, 0) <> 0 Then
kontrol = True
'MsgBox "Giriş Başarılı", vbInformation + vbOKOnly, "xProgramına Hoş Geldiniz"
eklemeye çalıştım olmadı.
*************************
İSTENİLEN
Altta bulunan kodda
Domain = CreateObject("WScript.Network").Userdomain
burdaki veri Const domain1 = "XXX" 'PC Domaininiz, Const domain2 = " " 'PC Domaininiz eşit ise şifre girme ekranı açılacak, değil ise örneğin tüm exceller kapatılıp dosya silinsin.
Şifre girme ekranı açılırsa aşağıdaki şekilde giriş işlemleri devam edecek.
textbox1'e kullanıcı adı el ile yazılıyor.
textbox2'ye şifre yazılıyor. Doğru ise program açılıyor. Değil ise komple kapatılıyor.
Benim orjinal çalışmada
'If Domain = domain1 Or Domain = domain2 Then 'Domain sorgulaması
If kullanıcıadı = Admin1 Or kullanıcıadı = Admin2 Or kullanıcıadı = Admin3 Or kullanıcıadı = LocalUser Then 'Kullanıcı Adı
If LogonUser(Environ("Username"), vbNullString, sifre, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, 0) <> 0 Then 'Kullanıcı Şifre Doğrulaması
kontrol = True
Domaini sorguluyordu, kullanıcı adınıda girince doğru ise açılıyordu.
Burda sorguyu olmadığı için değiştirdim.
*************************
C++:
Public Declare PtrSafe Function LogonUser Lib "advapi32.dll" Alias "LogonUserA" _
(ByVal lpszUsername As String, ByVal lpszDomain As String, _
ByVal lpszPassword As String, ByVal dwLogonType As Long, _
ByVal dwLogonProvider As Long, pexc As Long) As Long
Public Const LOGON32_LOGON_BATCH = 4
Public Const LOGON32_LOGON_INTERACTIVE = 2
Public Const LOGON32_LOGON_SERVICE = 5
Public Const LOGON32_LOGON_NETWORK = 3
Public Const LOGON32_PROVIDER_DEFAULT = 0
Public Const LOGON32_PROVIDER_WINNT35 = 1
Const domain1 = "XXX" 'PC Domaininiz
Const domain2 = " " 'PC Domaininiz
Const Admin1 = " " 'Admin kullanıcı adı
Const Admin2 = " " 'Admin kullanıcı adı
Const Admin3 = " " 'Admin kullanıcı adı
Public kontrol As Boolean
Sub Z_GirişEkranı()
Dim sifre As String
Domain = CreateObject("WScript.Network").Userdomain
LocalUser = CreateObject("WScript.Network").UserName
kullanıcıadı = LoginEkrani.TextBox1.Text
sifre = LoginEkrani.TextBox2.Text
'If Domain = domain1 Or Domain = domain2 Then 'Domain sorgulaması
If kullanıcıadı = Admin1 Or kullanıcıadı = Admin2 Or kullanıcıadı = Admin3 Or kullanıcıadı = LocalUser Then 'Kullanıcı Adı
If LogonUser(Environ("Username"), vbNullString, sifre, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, 0) <> 0 Then 'Kullanıcı Şifre Doğrulaması
kontrol = True
'MsgBox "Giriş Başarılı", vbInformation + vbOKOnly, "xProgramına Hoş Geldiniz"
Unload LoginEkrani
Else
kontrol = False 'bu satır sadece mantıksal sınama için var,başarısız giriş olursa uygulama_cikis prosedürünü çağırabilsin diye
MsgBox "Programa erişim yetkiniz yoktur!", vbCritical + vbOKOnly, "Yetkisiz Kullanıcı"
Unload LoginEkrani
End If
Else
kontrol = False
MsgBox "Programa erişim yetkiniz yoktur!", vbCritical + vbOKOnly, "Yetkisiz Kullanıcı"
Unload LoginEkrani
End If
If kontrol = False Then ' burada girişin başarılı olup olmadığına bakılıyor, false ise başarısız giriş yapıldığından
'yani domain ya da kullanıcı adının yanlış olduğundan dolayı gerekli prosedür çağırılıyor
Z_GirişEkranıÇıkış
Else
'BURADA HANGİ PROSEDÜR DEVAM EDECEKSE ONU YAZIN
'ÖRNEK: call userform2 ya da call deneme vb.
End If
End Sub
Sub Z_GirişEkranıÇıkış()
'MsgBox "Program kapatıldı."
Application.Quit
End Sub
Ekli dosyalar
-
38.1 KB Görüntüleme: 8