VBScript-FTP上传和下载

Standard
Function FTPUpload(sSite, sUsername, sPassword, sLocalFile, sRemotePath)

  Const OpenAsDefault = -2
  Const FailIfNotExist = 0
  Const ForReading = 1
  Const ForWriting = 2

  Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
  Set oFTPScriptShell = CreateObject("WScript.Shell")

  sRemotePath = Trim(sRemotePath)
  sLocalFile = Trim(sLocalFile)

  '----------Path Checks---------
  'Here we willcheck the path, if it contains
  'spaces then we need to add quotes to ensure
  'it parses correctly.
  If InStr(sRemotePath, " ") > 0 Then
    If Left(sRemotePath, 1) <> """" And Right(sRemotePath, 1) <> """" Then
      sRemotePath = """" & sRemotePath & """"
    End If
  End If

  If InStr(sLocalFile, " ") > 0 Then
    If Left(sLocalFile, 1) <> """" And Right(sLocalFile, 1) <> """" Then
      sLocalFile = """" & sLocalFile & """"
    End If
  End If

  'Check to ensure that a remote path was
  'passed. If it's blank then pass a ""
  If Len(sRemotePath) = 0 Then
    'Please note that no premptive checking of the
    'remote path is done. If it does not exist for some
    'reason. Unexpected results may occur.
    sRemotePath = ""
  End If

  'Check the local path and file to ensure
  'that either the a file that exists was
  'passed or a wildcard was passed.
  If InStr(sLocalFile, "*") Then
    If InStr(sLocalFile, " ") Then
      FTPUpload = "Error: Wildcard uploads do not work if the path contains a " & _
      "space." & vbCRLF
      FTPUpload = FTPUpload & "This is a limitation of the Microsoft FTP client."
      Exit Function
    End If
  ElseIf Len(sLocalFile) = 0 Or Not oFTPScriptFSO.FileExists(sLocalFile) Then
    'nothing to upload
    FTPUpload = "Error: File Not Found."
    Exit Function
  End If
  '--------END Path Checks---------

  'build input file for ftp command
  sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
  sFTPScript = sFTPScript & sPassword & vbCRLF
  sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
  sFTPScript = sFTPScript & "binary" & vbCRLF
  sFTPScript = sFTPScript & "prompt n" & vbCRLF
  sFTPScript = sFTPScript & "put " & sLocalFile & vbCRLF
  sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF

  sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
  sFTPTempFile = sFTPTemp & "" & oFTPScriptFSO.GetTempName
  sFTPResults = sFTPTemp & "" & oFTPScriptFSO.GetTempName

  'Write the input file for the ftp command
  'to a temporary file.
  Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
  fFTPScript.WriteLine(sFTPScript)
  fFTPScript.Close
  Set fFTPScript = Nothing  

  oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & sFTPTempFile & " " & sSite & _
  " > " & sFTPResults, 0, TRUE

  Wscript.Sleep 1000

  'Check results of transfer.
  Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, _
  FailIfNotExist, OpenAsDefault)
  sResults = fFTPResults.ReadAll
  fFTPResults.Close

  oFTPScriptFSO.DeleteFile(sFTPTempFile)
  oFTPScriptFSO.DeleteFile (sFTPResults)

  If InStr(sResults, "226 Transfer complete.") > 0 Then
    FTPUpload = True
  ElseIf InStr(sResults, "File not found") > 0 Then
    FTPUpload = "Error: File Not Found"
  ElseIf InStr(sResults, "cannot log in.") > 0 Then
    FTPUpload = "Error: Login Failed."
  Else
    FTPUpload = "Error: Unknown."
  End If

  Set oFTPScriptFSO = Nothing
  Set oFTPScriptShell = Nothing
End Function

Function FTPDownload(sSite, sUsername, sPassword, sLocalPath, sRemotePath, _
         sRemoteFile)

  Const OpenAsDefault = -2
  Const FailIfNotExist = 0
  Const ForReading = 1
  Const ForWriting = 2

  Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
  Set oFTPScriptShell = CreateObject("WScript.Shell")

  sRemotePath = Trim(sRemotePath)
  sLocalPath = Trim(sLocalPath)

  '----------Path Checks---------
  'Here we will check the remote path, if it contains
  'spaces then we need to add quotes to ensure
  'it parses correctly.
  If InStr(sRemotePath, " ") > 0 Then
    If Left(sRemotePath, 1) <> """" And Right(sRemotePath, 1) <> """" Then
      sRemotePath = """" & sRemotePath & """"
    End If
  End If

  'Check to ensure that a remote path was
  'passed. If it's blank then pass a ""
  If Len(sRemotePath) = 0 Then
    'Please note that no premptive checking of the
    'remote path is done. If it does not exist for some
    'reason. Unexpected results may occur.
    sRemotePath = ""
  End If

  'If the local path was blank. Pass the current
  'working direcory.
  If Len(sLocalPath) = 0 Then
    sLocalpath = oFTPScriptShell.CurrentDirectory
  End If

  If Not oFTPScriptFSO.FolderExists(sLocalPath) Then
    'destination not found
    FTPDownload = "Error: Local Folder Not Found."
    Exit Function
  End If

  sOriginalWorkingDirectory = oFTPScriptShell.CurrentDirectory
  oFTPScriptShell.CurrentDirectory = sLocalPath
  '--------END Path Checks---------

  'build input file for ftp command
  sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
  sFTPScript = sFTPScript & sPassword & vbCRLF
  sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
  sFTPScript = sFTPScript & "binary" & vbCRLF
  sFTPScript = sFTPScript & "prompt n" & vbCRLF
  sFTPScript = sFTPScript & "mget " & sRemoteFile & vbCRLF
  sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF

  sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
  sFTPTempFile = sFTPTemp & "" & oFTPScriptFSO.GetTempName
  sFTPResults = sFTPTemp & "" & oFTPScriptFSO.GetTempName

  'Write the input file for the ftp command
  'to a temporary file.
  Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
  fFTPScript.WriteLine(sFTPScript)
  fFTPScript.Close
  Set fFTPScript = Nothing  

  oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & sFTPTempFile & " " & sSite & _
  " > " & sFTPResults, 0, TRUE

  Wscript.Sleep 1000

  'Check results of transfer.
  Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, _
                    FailIfNotExist, OpenAsDefault)
  sResults = fFTPResults.ReadAll
  fFTPResults.Close

  'oFTPScriptFSO.DeleteFile(sFTPTempFile)
  'oFTPScriptFSO.DeleteFile (sFTPResults)

  If InStr(sResults, "226 Transfer complete.") > 0 Then
    FTPDownload = True
  ElseIf InStr(sResults, "File not found") > 0 Then
    FTPDownload = "Error: File Not Found"
  ElseIf InStr(sResults, "cannot log in.") > 0 Then
    FTPDownload = "Error: Login Failed."
  Else
    FTPDownload = "Error: Unknown."
  End If

  Set oFTPScriptFSO = Nothing
  Set oFTPScriptShell = Nothing
End Function

VBScript-数组排序

Standard
Sub ArraySort(aArrayToSort, sOrder)
  'This Sub will sort the array passed as aArrayToSort
  For i = UBound(aArrayToSort) - 1 To 0 Step -1
    For j = 0 To i
      If aArrayToSort(j) < aArrayToSort(j+1) And sOrder = "desc" Then         sTempStr = aArrayToSort(j+1)         aArrayToSort(j+1) = aArrayToSort(j)         aArrayToSort(j) = sTempStr       ElseIf aArrayToSort(j) > aArrayToSort(j+1) And sOrder = "asc" Then
        sTempStr = aArrayToSort(j+1)
        aArrayToSort(j+1) = aArrayToSort(j)
        aArrayToSort(j) = sTempStr
      End If
    Next
  Next
End Sub

Sub DoubleArraySort(aArray1ToSort, aArray2ToSort, sOrder)
  'This Sub will sort the array passed as aArray1ToSort,
  'the values in aArray2ToSort, will not be sorted, but
  'will be reordered in the same relational order as
  'aArray1ToSort
  For i = UBound(aArray1ToSort) - 1 To 0 Step -1
    For j = 0 To i
      If aArray1ToSort(j) > aArray1ToSort(j+1) And sOrder = "desc" Then
        sTempStr = aArray1ToSort(j+1)
        aArray1ToSort(j+1) = aArray1ToSort(j)
        aArray1ToSort(j) = sTempStr

        sTempStr = aArray2ToSort(j+1)
        aArray2ToSort(j+1) = aArray2ToSort(j)
        aArray2ToSort(j) = sTempStr
      ElseIf aArray1ToSort(j) < aArray1ToSort(j+1) And sOrder = "asc" Then
        sTempStr = aArray1ToSort(j+1)
        aArray1ToSort(j+1) = aArray1ToSort(j)
        aArray1ToSort(j) = sTempStr

        sTempStr = aArray2ToSort(j+1)
        aArray2ToSort(j+1) = aArray2ToSort(j)
        aArray2ToSort(j) = sTempStr
      End If
    Next
  Next
End Sub

SQL :多条记录取最前面一条或根据条件任取N条

Standard
–按某一字段分组取最大(小)值所在行的数据

/*
数据如下:
name val memo
a    2   a2(a的第二个值)
a    1   a1–a的第一个值
a    3   a3:a的第三个值
b    1   b1–b的第一个值
b    3   b3:b的第三个值
b    2   b2b2b2b2
b    4   b4b4
b    5   b5b5b5b5b5
*/
–创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values(‘a’,    2,   ‘a2(a的第二个值)’)
insert into tb values(‘a’,    1,   ‘a1–a的第一个值’)
insert into tb values(‘a’,    3,   ‘a3:a的第三个值’)
insert into tb values(‘b’,    1,   ‘b1–b的第一个值’)
insert into tb values(‘b’,    3,   ‘b3:b的第三个值’)
insert into tb values(‘b’,    2,   ‘b2b2b2b2’)
insert into tb values(‘b’,    4,   ‘b4b4’)
insert into tb values(‘b’,    5,   ‘b5b5b5b5b5’)
go

–一、按name分组取val最大的值所在行的数据。
–方法1:
select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name
–方法2:
select a.* from tb a where not exists(select 1 from tb where name = a.name and val > a.val)
–方法3:
select a.* from tb a,(select name,max(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
–方法4:
select a.* from tb a inner join (select name , max(val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
–方法5
select a.* from tb a where 1 > (select count(*) from tb where name = a.name and val > a.val ) order by a.name
/*
name       val         memo
———- ———– ——————–
a          3           a3:a的第三个值
b          5           b5b5b5b5b5
*/

–二、按name分组取val最小的值所在行的数据。
–方法1:
select a.* from tb a where val = (select min(val) from tb where name = a.name) order by a.name
–方法2:
select a.* from tb a where not exists(select 1 from tb where name = a.name and val < a.val)
–方法3:
select a.* from tb a,(select name,min(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
–方法4:
select a.* from tb a inner join (select name , min(val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
–方法5
select a.* from tb a where 1 > (select count(*) from tb where name = a.name and val < a.val) order by a.name
/*
name       val         memo
———- ———– ——————–
a          1           a1–a的第一个值
b          1           b1–b的第一个值
*/

–三、按name分组取第一次出现的行所在的数据。
select a.* from tb a where val = (select top 1 val from tb where name = a.name) order by a.name
/*
name       val         memo
———- ———– ——————–
a          2           a2(a的第二个值)
b          1           b1–b的第一个值
*/

–四、按name分组随机取一条数据。
select a.* from tb a where val = (select top 1 val from tb where name = a.name order by newid()) order by a.name
/*
name       val         memo
———- ———– ——————–
a          1           a1–a的第一个值
b          5           b5b5b5b5b5
*/

–五、按name分组取最小的两个(N个)val
select a.* from tb a where 2 > (select count(*) from tb where name = a.name and val < a.val ) order by a.name,a.val
select a.* from tb a where val in (select top 2 val from tb where name=a.name order by val) order by a.name,a.val
select a.* from tb a where exists (select count(*) from tb where name = a.name and val < a.val having Count(*) < 2) order by a.name
/*
name       val         memo
———- ———– ——————–
a          1           a1–a的第一个值
a          2           a2(a的第二个值)
b          1           b1–b的第一个值
b          2           b2b2b2b2
*/

–六、按name分组取最大的两个(N个)val
select a.* from tb a where 2 > (select count(*) from tb where name = a.name and val > a.val ) order by a.name,a.val
select a.* from tb a where val in (select top 2 val from tb where name=a.name order by val desc) order by a.name,a.val
select a.* from tb a where exists (select count(*) from tb where name = a.name and val > a.val having Count(*) < 2) order by a.name
/*
name       val         memo
———- ———– ——————–
a          2           a2(a的第二个值)
a          3           a3:a的第三个值
b          4           b4b4
b          5           b5b5b5b5b5
*/
–七,如果整行数据有重复,所有的列都相同。
/*
数据如下:
name val memo
a    2   a2(a的第二个值)
a    1   a1–a的第一个值
a    1   a1–a的第一个值
a    3   a3:a的第三个值
a    3   a3:a的第三个值
b    1   b1–b的第一个值
b    3   b3:b的第三个值
b    2   b2b2b2b2
b    4   b4b4
b    5   b5b5b5b5b5
*/
–在sql server 2000中只能用一个临时表来解决,生成一个自增列,先对val取最大或最小,然后再通过自增列来取数据。
–创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values(‘a’,    2,   ‘a2(a的第二个值)’)
insert into tb values(‘a’,    1,   ‘a1–a的第一个值’)
insert into tb values(‘a’,    1,   ‘a1–a的第一个值’)
insert into tb values(‘a’,    3,   ‘a3:a的第三个值’)
insert into tb values(‘a’,    3,   ‘a3:a的第三个值’)
insert into tb values(‘b’,    1,   ‘b1–b的第一个值’)
insert into tb values(‘b’,    3,   ‘b3:b的第三个值’)
insert into tb values(‘b’,    2,   ‘b2b2b2b2’)
insert into tb values(‘b’,    4,   ‘b4b4’)
insert into tb values(‘b’,    5,   ‘b5b5b5b5b5’)
go

select * , px = identity(int,1,1) into tmp from tb

select m.name,m.val,m.memo from
(
select t.* from tmp t where val = (select min(val) from tmp where name = t.name)
) m where px = (select min(px) from
(
select t.* from tmp t where val = (select min(val) from tmp where name = t.name)
) n where n.name = m.name)

drop table tb,tmp

/*
name       val         memo
———- ———– ——————–
a          1           a1–a的第一个值
b          1           b1–b的第一个值

(2 行受影响)
*/
–在sql server 2005中可以使用row_number函数,不需要使用临时表。
–创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values(‘a’,    2,   ‘a2(a的第二个值)’)
insert into tb values(‘a’,    1,   ‘a1–a的第一个值’)
insert into tb values(‘a’,    1,   ‘a1–a的第一个值’)
insert into tb values(‘a’,    3,   ‘a3:a的第三个值’)
insert into tb values(‘a’,    3,   ‘a3:a的第三个值’)
insert into tb values(‘b’,    1,   ‘b1–b的第一个值’)
insert into tb values(‘b’,    3,   ‘b3:b的第三个值’)
insert into tb values(‘b’,    2,   ‘b2b2b2b2’)
insert into tb values(‘b’,    4,   ‘b4b4’)
insert into tb values(‘b’,    5,   ‘b5b5b5b5b5’)
go

select m.name,m.val,m.memo from
(
select * , px = row_number() over(order by name , val) from tb
) m where px = (select min(px) from
(
select * , px = row_number() over(order by name , val) from tb
) n where n.name = m.name)

drop table tb

/*
name       val         memo
———- ———– ——————–
a          1           a1–a的第一个值
b          1           b1–b的第一个值

(2 行受影响)
*/

 

按Rdate分组取num最小的值所在行的数据。并根据主从表ID左关联取主表的所有字段。。。。

select a.*,b.* from child a left join parent as b on b.id=a.PID where num = (select min(num) from child where Rdate = a.Rdate)

 

excel中计算两列时间的时间差

Standard

A1是起始时间,B1为结束时间,那么:

以小时为单位:
=(HOUR(B1)-HOUR(A1))+(MINUTE(B1)-MINUTE(A1))/60+(SECOND(B1)-SECOND(A1))/3600

以分钟为单位:
=(HOUR(B1)-HOUR(A1))*60+(MINUTE(B1)-MINUTE(A1))+(SECOND(B1)-SECOND(A1))/60

以秒钟为单位:
=(HOUR(B1)-HOUR(A1))*3600+(MINUTE(B1)-MINUTE(A1))*60+(SECOND(B1)-SECOND(A1))

注意:你必须要把C1单元格设置为常规格式或者数字格式才能显示正确结果。

用Windows 7和XPMode搭建网络

Standard

目的是两方可以互访网络资源。比如website,databaseserver。

以SQL Server举例:

环境:Windows7安装SQL Server2005,希望在XP MODE中的xp能访问SQL Server,而Windows7中能访问Xp中的website。

设置:

首先Windows7安装Microsoft Loopback Adapter,设置其IP,如:1.1.1.1,掩码:255.255.255.0

XP Mode的 Virtual Pc的网络设置到Microsoft Loopback Adapter上,并将IP设置为1.1.1.2掩码为255.255.255.0

此时还是当向访问,处理办法是Windows7中将Microsoft Loopback Adapter的网关设置为xp mode网卡的IP即1.1.1.2.然后将双发防火墙关闭,这样xp就能访问windows7的database,windows7中也能访问sp中的website。



 

HP 2210 Driver for XP

Standard

C语言家族的发展史

Standard
1972年–,作为C语言的先驱B语言在贝尔实验室诞生。B语言速度快,易维护,适用于从系统层到应用层各种各样的开发。设计此语言的开发组很快赢得立即被解雇的待遇,因为其开发行为不适合一个电话公司雇员应有的行为。整个项目被移交到了一个叫Dennis家伙的手里,他将此语言改变得不易理解,难于维护,只适用于系统开发。他在指针系统里进行设计,以保证对每个超过五百行的程序提供一个指针给操作系统。这就是C语言。
1982年--97%的C程序调用都限于缓冲处理过度的开发。C程序员开始认识到,不管何时都可将变量初始化并放到内存中实在是个糟糕的方法。但是强迫合理地初始化变量将会破坏现有97%的C程序,于是大家便一直将就忍耐,无动于衷。
1984年--操作系统中指针乱指的数量能够开始显著的增长了。
1985年——一种带有面向对象特性的C变种语言,称之为“带类的C”,准备走进市场。但是,“带类的C”这个名字太清晰易懂,对于外人来说都不敢理解,于是商业化后的版本就将其改了个名,叫C++
1986年——C语言太流行了,于是产业分析师强烈推荐在商业开发中应用它。他们说,用C写的应用程序将会多么轻便灵活地用于各种各样的系统。据猜测可能是很多分析师是吃了迷魂药。
1988年——产业分析师们的药性终于消失了。当迷魂药性一过,他们才注意到商业应用程序用C写完后,其生产周期变成了原来的5倍长,但还是没达到轻便灵活的目的。他们开始停止推荐用C写应用程序。但一部分人仍然转而吸食“可卡因”,推荐用C++写应用程序,因为“其面向对象特性会导致代码重用”。
1990年——此时,所有的C编译器都已经变成了C++编译器了。但是大部分C++程序员不使用C++任何面向对象的特性,这就是说,实际情况是带有指针的雍肿的代码结构在操作系统中现在用C++编译器编译了。
1990年——Sun公司雇用了一些产业分析师,这些分析师都是吸食“快克”到了上瘾地步的人。之后Sun公司决定创建一种称之为oak的语言,用于在电视机置顶盒的编程(以对电视机等类似家用电器进行控制)。由于其所有的编程者已经将C语言的核心东西已经变成自己身体DNA的一部分了,所以这种新的语言极大程度上借荐了C和C++的语法。但是电视机置顶盒不需要有什么操作系统用破指针这玩意儿来处理,于是这种语言中没有指针。
1994年--sun公司的某个人终于发现,只为电视机置顶盒开发一种特殊的语言是多么愚不可及的一件事情。oak语言被重新命名为java,并重新定位为一种因特网语言,这种语言应能轻便地使用于许多平台。作为一项市场化的运动,这种推广很“成功”,因为当时产业界内只有不到3%的人知道因特网是什么东西,而吃了迷魂药的产业分析师们成为了吸食“可在不同平台使用”这种神秘毒品的瘾君子。
1995年——SUN向产业分析家们推出了香美的迷魂菇,并立即写文章说,java由于其在因特网上的完备性和轻便性将如何成为编程界的未来。
1996年年中——17,468,972篇文章推祟java如何是编程界的未来。在web页面上嵌入java小程序的时代到来了。
1996年年末——程序员们努力用java小程序创建出实际的web页面,实际上是对那些处于受挫失意的人们无异于进行集体性的自残。产业分析师们便通过继续增加他们的磕药剂量来增强自己的幻觉。
1997年——接受了处于幻觉状态的产业分析师们的建议之后,Corel公司决定用java重写它们所有的应用程序,包括wordperfect.最终产生了一个世界上第一个家喻户晓的比使用打字机还慢的字符处理软件。
1998年——认识到使用java 小程序(applet)的浪潮正在快速退去,sun公司又重新定位了java,这次是作为一个服务器语言。他们窃取了微软的transaction server的设计模式,并使大家都相信是他们自己创造了这种设计。
1999年——java 2 Enterprise Edition成了已经被迷药迷得飘飘欲仙的产业分析师们的强烈推荐产品。有21,499,512篇关于j2ee的文章,但没有一个人实际使用它,因为它还不够成熟,价格又高。
2000年——j2ee终于开始几分运作了。此时,所有的java开发商都准备用它来赚钱。此时,微软公布了.Net,几乎包括了j2EE的所有特性,但没有j2EE昂贵的价格。事实上,微软决定将.Net自由泄秘给大量的windows使用者。Scott McNealy(sun公司的CEO)气急败坏,向法庭以另一个不正当的借口起诉微软。
.Net包括了一个新的C家族语言,C#,读作C-pound,(译者注:pound就是#号,不过这个读法又有笨重的C的含义),它延续着这个有着愚蠢的名字家族的传统。
2001年——微软的营销部门认识到,市场上甚至没有人提及这个正在存在的开发工具。员工们在一起吃午饭时,认为应该将其叫为C sharp(译者注:sharp本身表示音乐中的升半音符#号,而在语言学中sharp又有“无声”的含义)。
2002年——C#成为.Net发行版本的一部分。在微软平台下的C++开发者们对这种“可控的代码”的思想欢欣雀跃。这意味着,他们终于迎来了自动清理内存的特色,而这早在1991年版的VB中或是1995年版的java中就已经实现了。

Windows Live服务列表与介绍

Standard
来源:新浪Blog

01. Windows Live Drive (代号: Storage)
为用户提供在线存储空间
http://drive.live.com

02. Windows Live Contacts
整合地图的在线联系人管理服务,当你与你的联系人都用该服务,联系信息的更新将能够自动同步
http://contacts.live.com

03. Windows Live.com (原来的: Start.com)
允许用户自定义首页内容的个性化首页服务.
www.live.com

04. Windows Live Web Search
一个新的MSN 搜索引擎,RSS频道、图像搜索等新的功能被加入其中
http://search.live.comhttp://www.live.com/?stickyHide=on

05. Windows Live Messenger
重新打造的MSN Messenger,与 Live Spaces更紧密,与Yahoo!互通并支持 VoIP 与视频通话
http://messenger.live.com

06. Windows Live Ideas
报道介绍新的项目,告诉你即将有什么服务推出或者已经推出
http://ideas.live.com

07. Windows Live Mail (代号: Kahuna)
重新打造的MSN Hotmail,全新的操作界面,更多更大的广告空间
http://mail.live.com

08. Windows Live Favourites (代号: Roaming Favourites)
为用户提供在线的收藏夹服务,允许你将自己的收藏夹存储在服务器上以便在任何地方都可以访问。
(US) http://favorites.live.com – (UK) http://favourites.live.com

09. Windows Live Expo (代号: Fremont)
一项类似eBay的服务,买、卖或者其他的交易方式,目前用户都是免费使用的
http://expo.live.com

10. Windows Live Labs
研究更好的新服务新项目.
http://labs.live.com

11. Windows Live OneCare (之前的: OneCare Live)
一站式的电脑安全中心,通过病毒已经防火墙等安全相关服务
免费的90天测试可用
http://onecare.live.comwww.windowsonecare.com

12. Windows Live Local (之前的: Virtual Earth)
提供虚拟和卫星图像服务,即将提供导航等相关服务
http://local.live.com

13. Windows Live OneCare Safety Scanner (代号: Safety Center)
在线的扫描服务为你检查电脑上是否有病毒或者而且安全隐患
http://safety.live.com

14. Windows Live Custom Domains
允许你使用自己的域名来开设电子邮箱,邮箱服务与Hotmail相同,但邮箱地址可以是你的域名
http://domains.live.com

15. Windows Live Call
提供优惠的价格拨打长途电话
包含在 Windows Live Messenger
http://messenger.live.com

16. Windows Live Call for Free (代号: FreeCall)
允许你在Live Local中搜索拨打免费的商业电话.
包含在 Windows Live Local
http://local.live.com

17. Windows Live Search
一个免费的桌面应用软件,允许你搜索电脑上本地硬盘上的文件
未有链接 – 通过 Windows Live Ideas 关注

18. Windows Live Search Desktop (代号: OneView)
Live Search Windows的一个版本
未有链接 – 通过 Windows Live Ideas 关注

19. Windows Live Search Translation
允许你使用 Live Web 搜索引擎并翻译网页与文本
http://search.live.com

20. Windows Live Local Preview
旧金山和西雅图的虚拟现实式电子地图
http://preview.local.live.com

21. Windows Live Toolbar
一个用于 Windows Explorer 和 Internet Explorer 的工具栏,供你快速访问自己的 Space、Live Mail 和 Live Favourites 以及搜索引擎.
http://toolbar.live.com

22. Windows Desktop Search
Live Search Windows的一个版本
未有链接 – 通过 Windows Live Ideas 关注

23. Windows Live Mail Center (之前的: Mail Desktop/Outlook Express Live)
阅读你的 Live Mail,其他的 POP3 和 IMAP 邮箱、RSS 内容在你的桌面上
没有网站,下载使用
http://g.msn.com/1csbeta/OELive

24. Windows Live ID
一种新的 MSN Passport ,所有的Live服务将使用其工作
http://login.live.comhttp://account.live.com

25. Windows Live Essentials (之前的: Windows Live Now)
类似于 Google Pack,打包提供的套装 Live 服务
未有链接 – 通过 Windows Live Ideas 关注

26. Windows Live Account
修改、管理、创建你的Live ID 与设置.
http://account.live.com

27. Windows Live Clipboard
可以在不同站点之间与电脑上应用程序之间复制、粘贴结构化的信息
未有链接,提供以下站点关注
www.liveclipboard.org

28. Windows Live Marketplace (代号: Agora)
购买、下载软件的在线商店
www.windowsmarketplace.com

29. Windows Live Shopping
类似于 Amazon.com 的在线商店
http://shopping.live.com

30. Windows Live QnA (代号: Answers)
问你想问的问题并获得回答,又或者回答问题以获得点数
http://qna.live.com

31. Windows Live Spaces (代号: Spaces 10.5)
世界最大的社会网络服务,你可以发表自己的Blog,分享自己的照片
http://spaces.live.com

32. Windows Live Academic Search
学术搜索引擎
选择 http://search.live.com Academic 选项卡

33. Windows Live Image Search
图像搜索引擎
选择 http://search.live.com Image 选项卡

34. Windows Live Product Search
允许你使用Windows Live 搜索引擎查找希望购买的产品.
http://products.live.com

35. Windows Live Voicemail
一项新的功能将包含在 Live Mail 和 Messenger,你可以发送语音邮件或留下语音留言
未有链接 – 通过 Windows Live Ideas 关注

36. Windows Live Sign-In Assistant
更友好安全的Windows Live ID 登陆、切换、管理功能
http://login.live.comhttp://account.live.com

37. Windows Live Wifi Suite
下载软件在你的笔记本与其他移动计算设备上轻松连接
http://wifi.live.com

38. Windows Live Hotspot Locator
搜索定位超过90个国家的免费与收费无线接入热点
http://hotspot.live.com

39. Windows Live Dev
一个Windows Live 的开发中心
http://dev.live.com

40. Windows Live Gallery (代号: Customise)
可以添加上 Live.com 或 Windows Live Spaces的画廊
http://gallery.live.com

41. Windows Live Mobile
专供移动设备的Live服务,同志你的移动设备上查看定制的 Windows Live.com
仅供移动设备服务
http://mobile.live-int.com/portal/default.aspx

42. Windows Live Mobile Mail
供移动设备的 MSN Hotmail
仅供移动设备服务
http://mobile.live.com

43. Windows Live Mobile Search
供移动设备使用的 MSN Search
仅供移动设备服务
http://mobile.live.com

44. Windows Live Publishing Portal
一个新的途径可以购买书籍,搜索、预览数百万本书籍。
http://publisher.live.com

45. Windows Live Feeds
供及RSS内容在 Mail Center.
未有链接 – 通过 Windows Live Ideas 关注

46. Windows Live Dashboard
提供集中、统一的操作界面控制各个Windows Live 服务
未有链接 – 通过 Windows Live Ideas 关注

备忘一: MSN Soapbox (代号“Warhol”)是一项 MSN 服务而并不是一项 Windows Live 服务。
备忘二: 另外还有一些由于并不是正式的服务而没有包含在列表中,例如 Windows Live Help。而另有一些服务则已经整合到其他的服务当中,例如Windows Live Near Me Search 已经包含在 Windows Live Local中。
备忘三: Xbox Live 以及 Office Live 实际上并不属于 Windows Live 产品,因而,它们并不是包含在这一个列表中。