Vb.net İle Web Sayfaları üzerinde Get-Post istekleri yapmak ve Excel işlemleri

Vb.net kullanarak threading,get,post ve excel işlemleri

Güzel bir programla/notlarla yeni bir post.

Programın,notların işlemleri;
Vb.net kullanarak Web sayfalarını getirmek veya web sayfalarına değerler post ederek gelen değerleri almak. Alınan verileri excel dosyası oluşturup ilgili sütün/satırlara yazıp biçimlendirmeleri (hücre birleştirme,renklendirme) yapıp kayıt etmek.

Programın yaptıkları;
1-İzmir metro seferlerini www.izmir.bel.tr adresinden Get ile alıp kaynak kodunu temizledikten sonra excele aktarıp kayıt etmek
2-İzmir banliyo seferlerini www.izban.com.tr adresinden alıp kayıt etmek.
3-Vapur seferlerini www.izmir.bel.tr ulaşımdaki vapur alanında bulunan kalkış ve varış comboboxları içerisindeki değerlerin hepsini tek tek post ederek gelen değerlere göre sefer varsa excele atmak
4-Otobüs numaralarını kullanarak www.eshot.gov.tr sitesinden her bir otobüs numarası için güzergah,saatlerini alıp excele kayıt etmek.

Kısaca izmir offline ulaşım rehberi. (21 Ekim 2010)
Okumaya devam et “Vb.net İle Web Sayfaları üzerinde Get-Post istekleri yapmak ve Excel işlemleri”

vb.net ile registry kullanarak Monitör Bilgilerini Görüntülemek

vb.net ile registry kullanarak Monitör Bilgilerini Görüntülemek

Envanter yazılımına bir bölüm daha ekledim. Bilgisayara bağlı olan Monitörün registry üzerinde kayıtlı olan EDID (Extended display identification data) bilgilerinden yararlanarak Serino,model,üretim tarihi,ölçüleri ve kaç inç olduğu gibi bilgilere erişebiliyoruz. Detaylı bilgi için VESA E-EDID™ Implementation Guide ı kullanabilirsiniz.

Imports System.Management
Imports System.Text
Imports Microsoft.Win32
Imports System.Net.NetworkInformation
Public Class Form1
Dim strmodel As String = “”
Dim strmodel2 As String = “”
Dim strserino As String = “”
Dim regedithex As String = “”
Dim struretimhaftasi As String = “”
Dim struretimyili As String = “”
Dim strdikey, stryatay As Integer
Dim strmonitorinc As Double
Private Function ByteArrayToString(ByVal ba As Byte()) As String
Dim hex As New StringBuilder(ba.Length * 2)
For Each b As Byte In ba
hex.AppendFormat(“{0:x2}”, b)
Next
Return hex.ToString()
End Function

Güncelleme: 26 Haziran 2010
Okumaya devam et “vb.net ile registry kullanarak Monitör Bilgilerini Görüntülemek”

vb.net üzerinde telnet uygulaması

Ağ üzerinde gün içerisinde networke dahil olmuş bilgisayarların hangi switchler üzerinden sisteme dahil olduklarını bulmak için yazdığım bir uygulama.

Uygulamanın çalışma mantığı:
Çalıştırıldığı dizinde 2 adet dosyaya ihtiyaç duyuyor ayarlar.ini ve switchler.txt. Switchler.txt switchlerin ip leri yer almakta. ayarlar.ini dosyasında ise switchlerin şifreleri (hepsi ortak olmalı), Çalıştırılacak komut (sh mac-address-table), database bilgileri ve filtreleme, loglama yapılacak mı gibi bilgiler girilmeli.

Loglama yapılacak seçilirse çalıştırıldığı dizinde Log klasörünün içerisine switchlerin konsollarından gelen verileri ve filtreleme sonucu oluşan dosyaların çıktıları yer almakta.

Filtreleme mantığı ise her switch uplink ve downlinkleri üzerinden bir çok kendi üzerinde olmayan mac adresinin database üzerine kayıt edilmesini engellemek için gerekli olan kısım. Benim örneğimde Fa (Fast Ethernet) ve Lo (Long Reach Ethernet) portlarındaki mac adreslerini almak için filtre girilmiş durumda.  En fazla 3 adet filtre için geliştirdim.

Program kısaca Cisco switchlere telnet bağlanıp Fa,Lo portlarındaki bilgilerin alınıp veritabanına kayıt edilmesini sağlıyor. İsterseniz zamanlamayı açıp her 120 saniyede bir tekrar liste almasını ve değişenleri yazmasını sağlayabilirsiniz.

SQL için aşağıdaki alanlara ihtiyaç duyulmakta;

DROP TABLE IF EXISTS `mac`;
CREATE TABLE `mac` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`switch` text,
`mac` text,
`vlanid` text,
`tarama` datetime DEFAULT NULL,
`port` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=507 DEFAULT CHARSET=utf8;

VB.Net Telnet Uygulaması (vs2005)

Zip açma şifresi : notsayfam.com

Vb.net remote registry ile bilgisayarın ürün anahtarını bulmak

vb.net kullanarak uzaktaki bilgisayarın ürün anahtarını almak, get remote computer product key using remote registry

vb.net envanter programı için gerekli olabilecek bir parça.
Imports Microsoft.Win32
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox(GetXPKey(TextBox1.Text))
End Sub
Public Function GetXPKey(ByVal hostorip As String) As String
Dim MyReg As RegistryKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, hostorip)
Dim MyRegKey As RegistryKey
MyRegKey = MyReg.OpenSubKey("Software\Microsoft\Windows NT\currentVersion", True)
Dim bytDPID() As Byte = MyRegKey.GetValue("DigitalProductID")
MyRegKey.Close()
Dim bytKey(14) As Byte
Array.Copy(bytDPID, 52, bytKey, 0, 15)
Dim strChar As String = "BCDFGHJKMPQRTVWXY2346789"
Dim strKey As String = ""
For j As Integer = 0 To 24
Dim nCur As Short = 0
For i As Integer = 14 To 0 Step -1
nCur = CShort(nCur * 256 Xor bytKey(i))
bytKey(i) = CByte(Int(nCur / 24))
nCur = CShort(nCur Mod 24)
Next
strKey = strChar.Substring(nCur, 1) & strKey
Next
For i As Integer = 4 To 1 Step -1
strKey = strKey.Insert(i * 5, "-")
Next
Return strKey
End Function
End Class

x64 üzerinde Visual Studio ODBC bağlantıları problemi

XP, Vista, Windows7 x64 üzerinde ODBC üzerinden veritabanı bağlantısı yaptıktan sonra

“ERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch”

hatası almamız muhtemel. Sebebi yine ODBC sürücülerinin 32bit sürücü desteğine sahip olması. Her ne kadar ODBC test ettiğimizde başarılı bir şekilde bağlandım dese de vb.net üzerinden bağlantı açılırken yukarıdaki hata mesajını döndürmekte.

Hatayı geçmek için projemizi çalışacağı CPU yu x86 seçmelimiz gerekiyor.

VS2008 üzerinde x86 ayarlanması

Project menüsünden Projemizin özelliklerini açalım.

Compile bölümünü açalım

Advanced Compile Optionsa yarlarını açalım.

Target CPU seçeneğini x86 seçtiğimizde projemiz artık sadece 32bitlik uygulama gibi çalışacak. Yukarıdaki ODBC sorunu kalkacaktır 🙂

Visual Basic :Net ile WMI kullanarak EtkiAlanı/Yerel Donanım envanterimizi almak

Donanım takip yazılımı yazarken aralarda kalmış olan bilgisayar donanımlarının alınması işlemini boş vaktimde tamamladım.

Domain üzerinde bağlantı bilgileri girilerek uzaktaki domain üyesinin envanteri alınabilir.

Programın yapabildikleri.

İşlemci , fiziksel işlemci , mantıksal işlemci adedi
en fazla ram desteği, anakartta kaç slot olduğu, hangi slotlarda hangi mhz ramlerin yer aldığı
Fiziksel diskler, partition yapıları, mantıksal diskler
Cd Sürücüler, tipleri
ekran kartları , ramleri
Yazıcılar, yazıcıların bağlı olduğu port,destekledikleri kağıt boyutları
Paylaşımlar, paylaşımların yolları, paylaşım çeşitleri
Ağ : DNS,IP,Gateway bilgileri
Seri, parallel port sayısı
Bilgisayarın üzerindeki slotlar ve tümleşik kartlar
 

 

Eğer uzaktaki bilgisayarın konfigürasyonunu alırken aşağıdaki hatayı alırsanız

The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

Client üzerindeki firewall açık durumda olmasından kaynaklanıyor. Client üzerinde aşağıdaki komutları çalıştırarak başarılı bir şekilde konfigürasyonu alabiliriz.

netsh.exe firewall set service type=REMOTEADMIN mode=ENABLE scope=ALL
netsh firewall add portopening protocol=tcp port=135 name=DCOM_TCP135

program kodları yazının devamında

  Okumaya devam et “Visual Basic :Net ile WMI kullanarak EtkiAlanı/Yerel Donanım envanterimizi almak”

vb.net üzerinde registry işlemleri

VB.net üzerinde registry işlemleri
‘ Kullanılabilecek Registry ana dizinleri

CurrentUser Kullanıcı tercihleri ile ilgili bilgi içerir.
LocalMachine Yerel makine konfigürasyonu hakkında bilgi içerir.
ClassesRoot Tipler ve özellikleri hakkında bilgi içerir.
Users Varsayılan kullanıcı hakkında bilgi içerir.
PerformanceData Yazılım performanları ile ilgili bilgi içerir.
CurrentConfig Kullanıcı bağımsız donanım konfigurasyon bilgisi içerir.
DynData Dinamik data bilgisi içerir.

VB.NET    Registry

ClassesRoot HKEY_CLASSES_ROOT    registry anahtarına erişmek için kullanılır.
CurrentConfig HKEY_CURRENT_CONFIG    registry anahtarına erişmek için kullanılır.
CurrentUser HKEY_CURRENT_USER     registry anahtarına erişmek için kullanılır.
DynData HKEY_DYN_DATA     registry anahtarına erişmek için kullanılır.
LocalMachine HKEY_LOCAL_MACHINE     registry anahtarına erişmek için kullanılır.
PerformanceData HKEY_PERFORMANCE_DATA    registry anahtarına erişmek için kullanılır.
Users HKEY_USERS registry anahtarına erişmek için kullanılır.

Okumaya devam et “vb.net üzerinde registry işlemleri”

VB.net LDAP(active directory) üzerinden SID değerini alıp Stringe dönüştürmek

‘SecurityIdentifier için gerekli kütüphane
Imports System.Security.Principal
Imports System.Text
Imports System.DirectoryServices
Private Sub adkullaniciadi_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles adkullaniciadi.LostFocus
sid.Text = “”
Dim objDe As New DirectoryEntry(”LDAP://127.0.0.1¨, “LDAP KULLANICIADI”, “LDAP SIFRE”)
Dim searcher As New DirectorySearcher(objDe)
searcher.Filter = “(&(objectClass=user)(SAMAccountName=” + adkullaniciadi.Text + “))”
searcher.PropertiesToLoad.Add(”objectSid”)
Dim Results As SearchResultCollection = searcher.FindAll()
For Each Result As SearchResult In Results
Dim Rpc As ResultPropertyCollection = Result.Properties
For Each [Property] As String In Rpc.PropertyNames
For Each Value As Object In Rpc([Property])
sid.Text = SIDtoString(Value)
Next
Next
Next
If sid.Text = “” Then
MsgBox(”Active Directory Kullanıcı Adını Kontrol Edin”, MsgBoxStyle.Critical)
End If
End Sub
Public Shared Function SIDtoString(ByVal sidBinary As Byte()) As String
Dim sid As New SecurityIdentifier(sidBinary, 0)
Return sid.ToString()
End Function

Vb.net/ASP.Net veritabanı bağlantısı

SQL Server Kullanıcı kimlik doğrulaması yöntemleri
‘1 SQL kullanıcısı kullanarak
Data Source=SUNUCU;Initial Catalog=VERITABANIADI;User ID=VERITABANIKULLANICIADI;Password=SIFRE
‘2 Entegre windows kimlik doğrulaması için
Data Source=SUNUCU;Initial Catalog=VERITABANIADI;Integrated Security=True

ASP.Net üzerinden Access veritabanına bağlanıp sorgu çalıştıralım.Aşağıdaki örnekte veritabanına bağlanıp kullanıcı sorgulaması yapılıyor. sonuca göre label üzerine yazı aktarılıyor
‘Kütüphanelerimizi yükleyelim
Imports System.Data.OleDb
Imports System.Data
Partial Class Uyegirisi
Inherits System.Web.UI.Page

‘vt isimli bir bağlantı tanımlıyoruz ve bağlantı satirini yazıyoruz
Dim vt As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=users.mdb")
‘Veritabanı üzerinde sql komutları çalıştırabilmek için command tanımlayalım
Dim komut As New OleDbCommand
‘Çalıştırdığımız sorgu sonucunda elde edeceğimiz verileri datareader üzerine yüklüyoruz.
Dim veriler As System.Data.OleDb.OleDbDataReader
Dim i As Integer
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Try

‘veritabanını açalım
vt.Open()
‘çalıştıracağımız komutun hangi bağlantı üzerinde çalışacağını atayalım
komut.Connection = vt
‘Sorgumuzu yazalım
komut.CommandText = "Select * from kullanicilar where kadi='" & kadi.Text & "'"
komut.ExecuteNonQuery()

‘sorguyu çalıştırıp dataları veriler isimli readerımıza yükledik
veriler = komut.ExecuteReader
i = 0

‘okumaya başlayalım. zatan o kullanıcı adını içeren tek kayıt olacaktır
Do While veriler.Read
i = 1

‘veri tabanımızdaki alanlar (id,kullaniciadi,sifresi) şeklinde olduğundan elde ettiğimiz kayıttaki veriler(2) değeri bize şifreyi veriyor.
If sifre.Text = veriler(2).ToString Then
FormsAuthentication.RedirectFromLoginPage(kadi.Text, hatirla.Checked)
Else
Label1.Visible = True
Label1.Text = "Yanlış şifre girdiniz"
End If
Loop
vt.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try

‘Eğer sorgu sonucunda o kullanıcı adında kimse yok ise veriler.read olamayacağından i halen 0 değerine eşit olacak dolayısıyla
If i = 0 Then
Label1.Text = "Kullanıcı adını kontrol ediniz."
Label1.Visible = True
End If
End Sub

ASP.NET kullanarak Access değilde SQL server üzerine bağlantı yapmak isterseniz
yukarıdaki bağlantı parametrelerini aşağıdakiler ile değiştirmeniz yeterli olacaktır.
Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlClient
Partial Class Uyegirisi
Inherits System.Web.UI.Page
Dim vt As New SqlConnection
Dim veriler As SqlDataReader
Dim komut As SqlCommand
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

‘Kimlik doğrulama yöntemi olarak windows auth kullanırsak
vt.ConnectionString = "Data Source=SUNUCUADI;Initial Catalog=VTADI;Integrated Security=True"