2015年5月21日 星期四

陣列

一維陣列中不重覆資料的篩選
Dim AAA() As String = {"Ball", "Cup", "Ball", "ball", "Apple"}
        Dim BBB As New List(Of String)
        Dim i, j
        Dim count
        For i = 0 To AAA.Length - 1
            count = 0       ' count 是用來計算字串出現的次數
            For j = 0 To AAA.Length - 1
                If AAA(i) = AAA(j) Then     ' 當字串相同時,則count加1
                    count = count + 1
                End If
            Next
            If count = 1 Then  '當字串只有在陣列內只出現一次時,表示沒有重複
                BBB.Add(AAA(i)) ' 將字串加入 BBB
            End If
        Next

2015年5月6日 星期三

Windows API Index

ASP.NET Web API

https://msdn.microsoft.com/zh-tw/library/hh833994(v=vs.108).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/ff818516%28v=vs.85%29.aspx

http://itzone.hk/article/index.php?tid=18

 Windows API入門(一)
http://itzone.hk/article/article.php?aid=200406210117357519

Windows API入門(二):如何建立視窗

http://itzone.hk/article/article.php?aid=200406210122591030

ServerVariables環境變數

範例
參考
https://l2.io/ Request.ServerVariables

ServerVariables這一個資料集合可以取得網頁伺服端的環境變數

[ 使用方式 ]

Request.ServerVariables ("環境變數的名稱")

[ 環境變數名稱集合 ]

ALL_HTTP:傳送到客戶端的所有HTTP header資料

ALL_RAW:傳送到客戶端的所有資料(以raw的資料格式)

APPL_MD_PATH:傳回伺服端的metabase路徑

APPL_PHYSICAL_PATH:將APPL_MD_PATH轉換成為實際的路徑傳回

AUTH_PASSWORD:傳回客戶端使用者在確認對話框中所輸入的密碼

AUTH_TYPE:傳回客戶端認證的方法

AUTH_USER:傳回客戶端確認在確認對話框中所輸入的使用者名稱

CONTENT_LENGTH:傳回content的資料長度

CONTENT_TYPE:傳回客戶端文件傳送的型態,如GET或POST等...

GATEWAY_INTERFACE:傳回伺服端的CGI版本

HTTP_:傳回使用者自建的HTTP Header資料

LOCAL_ADDR:傳回伺服端電腦的IP位址

LOGON_USER:傳回登錄Windows NT的使用者資訊

PATH_INFO:取得目前網頁的虛擬路徑

PATH_TRANSLATED: 目前執行的ASP程式,位於伺服端的真實路徑

QUERY_STRING:傳回在HTTP://後以?所傳遞的參數資料

REMOTE_ADDR:遠端主機的IP位址

REMOTE_HOST:遠端主機的名稱

REMOTE_USER:遠端的使用者名稱

REQUEST_METHOD:傳回HTTP的請求方式,如GET或POST等...

SCRIPT_NAME:被執行的ASP檔案完整的虛擬路徑

SERVER_NAME:傳回網頁伺服端的電腦名稱,DNS或IP位址

SERVER_PORT:伺服端HTTP的埠(Port)

SERVER_PORT_SECURE:傳回客戶端是否指定安全的埠,是則為1,否為0

SERVER_PROTOCOL:取得HTTP的版本

SERVER_SOFTWARE:取得網頁伺服器的名稱與版本

URL:取得目前網頁虛擬路徑的儲存位址


--------------------------------------------------------------------------------

[ 範例 ]

Response.Write Request.ServerVariables ("PATH_INFO")


取得目前網頁的虛擬路徑 

取電腦名稱

http://www.dotblogs.com.tw/mingstyle/archive/2013/03/09/96041.aspx

http://pbnpbnbkx.pixnet.net/blog/post/54098472-%E7%82%BA%E4%BD%95%E8%A6%81%E5%BE%9Easp%E5%8D%87%E7%B4%9A%E5%88%B0asp.net

VBNET修改電腦名稱

參考

ASP.NET 取得 Client端使用者相關資訊(AD, Local)


//取得對方的IP Adress
HttpContext.Current.Request.UserHostAddress;
Request.UserHostAddress.ToString()

//取得對方的主機名稱
System.Net.Dns.GetHostName();

//取得電腦現在的時間
DateTime.Now.ToString();

//取得目前這頁網址
Request.Url.ToString();



//AD Client端名稱 (若沒有windows登入驗證則沒有)
System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString()

web.config 設定



 

IIS 設定

1. 將驗證方法內「啟用匿名存取」取消
2. 將驗證方法內「整合式Windows驗證」勾選


https://msdn.microsoft.com/zh-tw/library/system.web.httprequest.browser(v=vs.80).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1


http://msdn.microsoft.com/zh-tw/library/system.web.httprequest.browser(VS.80).aspx


Request.UserHostAddress   => 取IP值
Request.UserHostName  => 取電腦名稱
設定 REMOTE_HOST 在 IIS 中執行反向 DNS 查閱 
在伺服器DOS 命令列下
1.    cd C:\Inetpub\Adminscripts 
2.    cscript adsutil.vbs set /w3svc/EnableReverseDNS "TRUE"

vb net
 Dim ip As String

        ip = HttpContext.Current.Request.UserHostAddress
        Dim hostInfo As System.Net.IPHostEntry

        hostInfo = System.Net.Dns.GetHostByAddress(ip)

        Dim name As String

        name = hostInfo.HostName

        Response.Write(name)

=========================================================
您可以使用ASP的Request對象的方法ServerVariables方法得到客戶機的機器名,如下:
遠程客戶機名



一般情況下,考慮到網絡性能,Request.servervariables("REMOTE_HOST")返回客戶的IP地址。您可以改變IIS的metabase的設定,允許IIS根據客戶的IP地址查詢用戶的機器名。
您可以改變IIS的metabase的相關設定有兩種方法:
1.在Asp中用代碼設定

Dim oIIS
Dim vEnableRevDNS
Dim vDisableRevDNS

vEnableRevDNS = 1
vDisableRevDNS = 0

Set oIIS = GetObject("IIS://localhost/w3svc")
oIIS.Put "EnableReverseDNS", vEnableRevDNS
oIIS.SetInfo
Set oIIS = Nothing




2. 運行命令行:cscript C:\Inetpub\AdminScripts\adsutil.vbs set /w3svc/EnableReverseDNS "TRUE"

此時,Request.servervariables("REMOTE_HOST")返回客戶的機器名。

=============================================================

方法二:
strIP = Request.ServerVariables("REMOTE_ADDR")
strHost = Request.ServerVariables("REMOTE_HOST")
Set net = Server.CreateObject("wscript.network")
Set sh = Server.CreateObject("wscript.shell")
sh.run "%comspec% /c nbtstat -A " & strIP & " 〉 d:\wwwtemp" & strIP & ".txt",0,true
sh.run "%comspec% /c ping -a " & strIP & " 〉 d:\wwwtemp" & strIP & "ping.txt",0,true
Set sh = nothing
'分析ping命令結果獲取計算機名
Function GetComputerName(strIP)
set fso=CreateObject("scripting.filesystemobject")
set ts=fso.opentextfile("d:\wwwtemp" & strIP & "ping.txt")
computername=null
do while not ts.AtEndOfStream
data = ucase(trim(ts.readline))
if instr(data,"[") then
computername=trim(split(data,"[")(0))
computername=trim(replace(computername,"PINGING",""))
exit do
end if
loop
GetComputerName=computername
End Function
'分析nbtstat命令結果獲取MAC地址
Function GetMACAddress(strIP)
Set fso = createobject("scripting.filesystemobject")
Set ts = fso.opentextfile("d:\wwwtemp" & strIP & ".txt")
macaddress = null
Do While Not ts.AtEndOfStream
data = ucase(trim(ts.readline))
If instr(data,"MAC ADDRESS") Then
macaddress = trim(split(data,"=")(1))
Exit Do
End If
loop
GetMACAddress = macaddress
End Function