顯示具有 時間 標籤的文章。 顯示所有文章
顯示具有 時間 標籤的文章。 顯示所有文章

2009年8月27日

如何停用 Windows Virtual PC 的時間同步功能

在預設狀態下,於 Windows 7 建立新的 Windows Virtual PC 來賓電腦(Guest Computer)虛擬機器時,會自動啟用與實體機器進行時間同步,但如果要模擬軟體試用期過期或是因試用期已過,需要調整虛擬機器內的系統時間,就需要關閉時間同步功能。

此時,請依照下列步驟進行操作:
  1. 關閉虛擬機器(不要用「休眠」的方式,要用「關機」)。
  2. 用文字編輯器開啟該虛擬機器的設定檔(.vmc),預設目錄跟虛擬硬碟檔案(.vhd)在同一目錄:
    C:\Users\<使用者帳號>\AppData\Local\Microsoft\Windows Virtual PC\Virtual Machines
  3. 找到如下所示的位置:
    <hardware>
      <bios>
        <base_board>
          ...
        </base_board>
        ...
      </bios>
    </hardware>

  4. <base_board>  之前加入如下的一行設定,以便當來賓電腦開機時,不會自動同步更新 BIOS 的時間:
    <time_sync_at_boot type="boolean">false</time_sync_at_boot>
    設定完的結果如下:
    <hardware>
      <bios>
        <time_sync_at_boot type="boolean">false</time_sync_at_boot>
        <base_board>
          ...
        </base_board>
        ...
      </bios>
    </hardware>

  5. 找到如下所示的位置:
    <integration>
      <microsoft>
        ...
        <host_time_sync>
          <enabled type="boolean">true</enabled>
          <frequency type="integer">15</frequency>
          <threshold type="integer">10</threshold>
        </host_time_sync>
        ...
      </microsoft>
    </integration>
  6. <host_time_sync><enabled type="boolean"> 標記中的 true改成  false
  7. 將修改後的 .vmc 設定檔儲存,然後啟動虛擬機器。
  8. 關閉虛擬機器的「網際網路時間」同步化功能:
    1. 在工作列的小時鐘上,按下滑鼠右鍵,選擇「調整日期/時間(A)」指令。
    2. 按下「網際網路時間」索引標籤。
    3. 取消 □ 自動與網際網路時間伺服器同步化(S) 核取方塊,按下「確定」按鈕。
附註:
  1. 上述的設定,也適用於 Virtual PC 或 Virtual Server 的虛擬機器設定檔。
  2. 請使用「小寫的英文字」來輸入值,如果您使用大寫字元或輸入一個不正確的值時, Windows Virtual PC 會自動忽略該設定。

2006年11月9日

如何知道上次登入系統的時間 - 使用程式法

先前討論過使用現成指令的方式來查詢上次登入系統的時間,這次我們改用 .vbs 來查詢,這個 .vbs 有使用限制,不能用在 Windows 2000 以上的 AD 環境中。如果硬要用的話,就需要改用 LDAP。
---程式碼開始---
Option Explicit
On Error Resume Next
' 定義變數
Dim strDomain
Dim WshNetwork
Dim strUsername
Dim oUsr
' 取得網域名稱
Set WshNetwork = WScript.CreateObject("WScript.Network")
If Err.Number <> 0 then
WScript.Echo "無法建立 Network 物件"
WScript.Quit
End if
strDomain = WshNetwork.UserDomain
' 取得登入者帳號
strUsername = WshNetwork.Username
Set oUsr = GetObject("WinNT://" & strDomain & "/" & strUsername & ",user")
WScript.Echo "帳號:" & oUsr.Name
WScript.Echo "上次登入時間是:" & oUsr.LastLogin

---程式碼結束---
使用方式,就是將上面的程式碼複製下來,並存檔成 UsersLastLoginInfo.vbs,然後使用
cscript /nologo UsersLastLoginInfo.vbs
即可查得目前登入的使用者上次登入系統的時間。

2006年10月28日

如何知道上次登入系統的時間 - 使用現成指令法

如果是單機的作業系統環境,可以鍵入如下的指令來查詢上次登入系統的時間:
net user %username% findstr "上次登入時間"
如果是登入到主網域電腦環境時,可以使用如下的指令:
net user %username% /DOMAIN findstr "上次登入時間"
您可能會好奇,知道這個資訊有用嗎?
當然有用,您可以知道是否有人使用您的帳號登入系統,比方說,在公司網域環境中,您如果發現上次登入系統的時間,自己根本沒有登入系統,就應該趕緊更改密碼,以免自己的機密資料被他人竊取!

2006年7月19日

如何利用批次檔取得今日的日期或時間,甚至是部分的日期或時間

Windows 2000/XP/Server 2003 有兩個未公開的環境變數,可以顯示目前的日期與時間,分別是 %date%%time%,透過這兩個環境變數,管理者可以自行撰寫批次檔(.bat 或 .cmd檔)取得所需部分的日期或時間內容。就讓我們透過下面的範例來看看這兩個變數的內容,並如何搭配
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

指令取得所需的部分日期或時間內容。

先看看日期變數的內容是什麼:
C:\>echo %date%

螢幕輸出:
2006/03/07 星期二 <----- Windows XP/Server 2003 的結果
星期二 2006/03/07 <----- Windows 2000 的結果

看到沒?Windows 2000 會先顯示星期,再顯示日期,所以我們在後續取出日期的年、月、日或星期的時候,要特別注意他們的順序。 再來看看時間變數的內容是什麼:
C:\>echo %time%
螢幕輸出:
14:21:57.47

接著我們使用 FOR 指令來把日期的分隔符號「/」以及空白(White Space)去掉,並將其結果顯示在螢幕上(下面的解說是以 Windows XP/Server 2003 為例,如果是 Windows 2000,則請自行舉一反三):

MyDate.bat 的檔案內容如下所示:
----程式開始---- REM 取得日期
FOR /F "tokens=1-4 delims=/ " %%a IN ("%date%") DO (
SET _MyDate=%%a%%b%%c%%d
)

REM 顯示去掉分隔符號後的結果
echo %_MyDate%
----程式結束----

看看執行的結果:
C:\>MyDate
螢幕輸出:
20060307星期二

想不到只是透過幾行程式碼就可以去掉日期變數的分隔符號了,相信有不少人看不懂那段程式碼,就讓我簡單地說明一下吧!

/F 是指定將後面 %date% 的環境變數當成檔案來處理,而處理的依據就是在「"tokens=1-4 delims=/ "」這邊。tokens如果按照字面翻譯的話,是權杖的意思,這樣翻不太直覺,在這邊翻成順序可能比較好一些。以這個例子來說,就是要取得順序 1 ~ 4 的字串,那程式怎麼知道這個順序的分法呢?
透過 delims 這個引述的設定,程式就知道要怎麼去分析 %date% 環境變數的順序。在 delims 等號右邊的字元就是用來指定分割順序的依據。以這個例子來說,我們用「/」與「 」(空白,White Space)這兩個分隔符號來分割 %date% 的順序。因此原本 %date% 的內容是 2006/03/07 星期二,在程式來看就變成了:

順序 內  容
﹉﹉ ﹉﹉﹉﹉
1    2006
2      03
3     07
4   星期二

%%a 是說把順序 1 的結果指派給名稱為 %%a 的變數,因此順序 2 的變數名稱就會是 %%b,以此類推,最多可以有 52 個變數,原因如下:變數名稱有大小寫之分,所以 %%a 跟 %%A 不同,且僅能以一個英文字母來命名,所以 26(個字母)× 2(大寫跟小寫 2 種)=52(個)。

DO 後面的括號內容是用來指定所要執行的命令內容,以這個例子來說,就是指定一個名稱為 _MyDate 的變數,它的內容是由 %%a%%b%%c%%d 所構成的。

再來我們看看使用 FOR 指令去掉時間變數之分隔符號的結果:

MyTime.bat 的檔案內容如下所示:
----程式開始---- REM 取得時間
FOR /F "tokens=1-4 delims=:." %%a IN ("%time%") DO (
SET _MyTime=%%a%%b%%c%%d
)

REM 顯示去掉分隔符號後的結果
echo %_MyTime%
----程式結束----

看看執行的結果:
C:\>MyTime

螢幕輸出:
14243241

講了這麼多,您知道該怎麼運用 %date%%time% 環境變數了嗎?

參攷資料: