ไปนั่งคิดนอนคิดก็เลยคิดว่าน่าจะเขียน Log on script ด้วย VBScript มาทำงานนี้ครับ เริ่มแรกผมเก็บข้อมูลรายชื่อ user ไว้ใน database ก่อน แล้วพอ Log on script ทำงานจะไปตรวจสอบว่า User นั้นตรงกับที่อยู่ใน database หรือไม่ ทีนี้เราต้องใช้ Windows Scripting Host (WScript) มาร่วมด้วยครับ
ON ERROR RESUME NEXT
'*******************************************************
'// GET LOGON USER ACCOUNT
'*******************************************************
Dim WSHNetwork
Set WSHNetwork = CreateObject("Wscript.Network")
Dim userAccount
userAccount = WSHNetwork.UserDomain & "\" & WSHNetwork.UserName
Set WSHNetwork = nothing
'*******************************************************
'// VALIDATE USER
'*******************************************************
Set cnn = CreateObject("adodb.connection")
Set rstUser = CreateObject("adodb.recordset")
cnn.connectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=xxxx;Password=yyyy;Initial Catalog=UserList;Data Source=xxSQLServer"
cnn.open
Dim strSQL
strSQL = "select employeeid from dbo.tblUser a where aduser = '" & userAccount "'"
rstUser.open strsql, cnn
If not rstUser.eof Then
'// If valid user, execute IE
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "iexplore.exe -new http://myHost/myApplication"
Set WSHShell = nothing
End If
rstUser.close
cnn.close
Set rstUser = Nothing
Set cnn = Nothing
ทดสอบการทำงานก็ได้ผลโอเคครับ แต่โดน Network Admin ติงมานิดหน่อยว่าไม่อยากให้ไปติดต่อ database เพราะมันช้า และต้องใช้ traffic ของ network เนื่องจาก SQLServer กับ AD อยู่คนละ Server กัน ดังนั้นเลยเปลี่ยนเอา list ของ user มาเก็บเป็น Text file แทนครับ ลองดูโค้ดเฉพาะตรงนี้กัน ส่วนหา user log on ก็เหมือนโค้ดด้านบน
const ForReading = 1, TristateTrue = -1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("\\myserver\netlogon\UserList.txt", ForReading, false, TristateTrue)
Dim user
Dim isFound
isFound = 0
Do Until objFile.AtEndOfStream
user = trim(objFile.ReadLine)
If lcase(user) = lcase(useraccount) Then
isFound = 1
'msgbox isFound
Exit Do
End If
Loop
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
If isFound = 1 Then
'// If valid user, execute IE
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "iexplore.exe -new http://myHost/myApplication"
Set WSHShell = nothing
End If
ไม่มีความคิดเห็น:
แสดงความคิดเห็น