2008年4月10日 星期四

當您嘗試安裝或移除 Microsoft 程式時,收到「錯誤 1606」錯誤訊息

安裝WEB CAM時出現 "無法存取網路位置(null)\" 之錯誤訊息
正確error message : Error 1606 Could not access network location (null)\
因為羅技安裝程式的包裝所以無法顯示正確之錯誤訊息
解決方法如下:
找出並按一下下列登錄子機碼: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurentVersion\Explorer\User Shell Folders Common Programs REG_EXPAND_SZ (null)改成Common Programs REG_EXPAND_SZ %ALLUSERSPROFILE%\「開始」功能表\程式集即可正常安裝
詳細說明文件如下:
http://support.microsoft.com/kb/886549
當您嘗試安裝或移除 Microsoft 程式時,收到「錯誤 1606」錯誤訊息檢視此文章適用的產品。
文章編號:886549上次校閱:2005年4月6日版次:3.0
重要 本文包含有關修改登錄的相關資訊。修改登錄之前,請務必將它備份起來,並瞭解如何在發生問題時還原登錄。如需有關如何備份、還原和編輯登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件: 256986 (http://support.microsoft.com/kb/256986/) Microsoft Windows 登錄說明徵狀當您嘗試安裝或移除<適用於>一節所列的任何一種產品時,可能會收到類似下列的錯誤訊息: 錯誤 1606:無法存取網路位置回此頁最上方發生的原因如果下列其中一個登錄子機碼中有錯誤的設定,可能就會發生這個問題: •HKEY_CURRENT_USER\Software\Microsoft\Windows\CurentVersion\Explorer\User Shell Folders•HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurentVersion\Explorer\User Shell Folders
回此頁最上方解決方案警告 不當使用「登錄編輯程式」可能會導致嚴重的問題,甚至必須重新安裝作業系統。Microsoft 並不保證可以解決您不當使用「登錄編輯程式」所導致的問題。請自行承擔使用「登錄編輯程式」的一切風險。如果要解決這個問題,請依照下列步驟執行: 1.按一下 [開始],再按 [執行],輸入 Regedit.exe,然後按一下 [確定]。2.找出並按一下下列登錄子機碼: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurentVersion\Explorer\User Shell Folders3.在右窗格中,確認其中的數值與下列表格中的數值相同。如果每個數值都符合表格中的值,請執行步驟 7。
數值名稱類型數值資料AppDataREG_EXPAND_SZ %USERPROFILE%\Application DataCacheREG_EXPAND_SZ %USERPROFILE%\Local Settings\Temporary Internet FilesCookiesREG_EXPAND_SZ %USERPROFILE%\CookiesDesktopREG_EXPAND_SZ %USERPROFILE%\桌面FavoritesREG_EXPAND_SZ %USERPROFILE%\FavoritesHistoryREG_EXPAND_SZ %USERPROFILE%\Local Settings\HistoryLocalAppDataREG_EXPAND_SZ %USERPROFILE%\Local Settings\Application DataLocal SettingsREG_EXPAND_SZ %USERPROFILE%\Local SettingsMy PicturesREG_EXPAND_SZ %USERPROFILE%\My Documents\My PicturesNetHoodREG_EXPAND_SZ %USERPROFILE%\NetHoodPersonalREG_EXPAND_SZ %USERPROFILE%\My DocumentsPrintHoodREG_EXPAND_SZ %USERPROFILE%\PrintHoodProgramsREG_EXPAND_SZ %USERPROFILE%\「開始」功能表\程式集RecentREG_EXPAND_SZ %USERPROFILE%\RecentSendToREG_EXPAND_SZ %USERPROFILE%\SendToStart MenuREG_EXPAND_SZ %USERPROFILE%\「開始」功能表StartupREG_EXPAND_SZ %USERPROFILE%\「開始」功能表\程式集\啟動TemplatesREG_EXPAND_SZ %USERPROFILE%\Templates
4.如果有任何「名稱」、「類型」或「數值」與步驟 3 中的表格不符,請用滑鼠右鍵按一下「數值」名稱,然後按一下 [刪除]。5.在左窗格中,用滑鼠右鍵按一下 [User Shell Folders],指向 [新增],按一下 [可擴充字串值],輸入步驟 3 表格中您想要的名稱數值,然後按下 ENTER。6.用滑鼠右鍵按一下您在步驟 5 中建立的數值,再按 [修改],在 [數值資料] 方塊中輸入數值名稱的值,然後按一下 [確定]。7.找出並按一下下列登錄子機碼: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurentVersion\Explorer\User Shell Folders8.在右窗格中,確認其中的數值與下列表格中的數值相同。如果每個數值都符合表格中的值,請執行步驟 12。
數值名稱類型數值資料Common AppDataREG_EXPAND_SZ %ALLUSERSPROFILE%\Application DataCommon DesktopREG_EXPAND_SZ %ALLUSERSPROFILE%\桌面Common DocumentsREG_EXPAND_SZ %ALLUSERSPROFILE%\DocumentsCommon FavoritesREG_EXPAND_SZ %ALLUSERSPROFILE%\FavoritesCommon ProgramsREG_EXPAND_SZ %ALLUSERSPROFILE%\「開始」功能表\程式集Common Start MenuREG_EXPAND_SZ %ALLUSERSPROFILE%\「開始」功能表Common StartupREG_EXPAND_SZ %ALLUSERSPROFILE%\「開始」功能表\程式集\啟動Common templatesREG_EXPAND_SZ%ALLUSERSPROFILE%\Templates
9.如果有任何「名稱」、「類型」或「數值」與步驟 3 中的表格不符,請用滑鼠右鍵按一下「數值」名稱,然後按一下 [刪除]。10.在左窗格中,用滑鼠右鍵按一下 [User Shell Folders],指向 [新增],按一下 [可擴充字串值],輸入步驟 3 表格中您想要的名稱數值,然後按下 ENTER。11.用滑鼠右鍵按一下您在步驟 5 中建立的數值,再按 [修改],在 [數值資料] 方塊中輸入數值名稱的值,然後按一下 [確定]。12.結束 [登錄編輯程式],然後重新啟動電腦。

2008年3月4日 星期二

HoverSnap螢幕抓圖程式

這是一個免費的螢幕抓圖程式 HoverSnap ; 大家上google 輸入關鍵字,下載來用吧!
支援的存檔格式: jpg , png , gif , bmp
拿來寫部落格最好用!

Histats 免費網頁計數器

這是一個flash版本的免費網頁計數器,就如本blog所顯示的計數器,登入該網站還可以看到更多詳細資訊喔(日,月,60天的統計資料...)!
http://www.histats.com/
依指示註冊後,將javascript code copy到自己的網頁內,就可以用囉











































Dos 轉 Usb

還在用N年前的DOS程式嗎? 現在買的新電腦都已經是Vista作業系統了,要跑DOS程式就更加困難了! 以下提供一個花小錢就可以解決的方法:
由於現在的電腦都支援usb裝置開機,所以我們只要花個400~500元買一個2G Usb隨身碟,就可以像以前一樣使用DOS的程式了!
1.先去下載 HP USB Disk Storage Format Tool , 這個軟體是HP提供的免費軟體喔!
2.執行HP USB Disk Storage Format Tool,把行動碟格式化並把建立啟動磁區的功能打開,格式化好後你的行動碟就可以開機囉!
3. 在vista下將以前的dos程式copy 到行動碟,再修改一下autoexec.bat and config.sys 就可以用行動碟開機,快樂的執行以前DOS的程式囉!



2008年3月1日 星期六

Open Flash Chart使用分享

近期找到一套免費又有超強功能的圖表軟體 Open Flash Chart
http://teethgrinder.co.uk/open-flash-chart/





稍微修改一下該網站提供的範例,就可以在網頁上秀出如下曲線圖




貼上php程式碼
//if ($_POST["dip1024"]=="on")
//{ echo "dip use 1024x768
"; }
//echo "dip1680:".$_POST["dip1680"] . "
";
echo "t1:".$_POST["t1"] . "
";

//echo "byear:".$_POST["byear"] . "
";
//echo "max Temp.:" . $_POST["maxtemp"]."
";
}
include_once( '../ofc-library/open-flash-chart.php' );
include_once( '../sqlconf/conn.php' );

switch ($_POST["roomselect"])
{
case "room1":
$hd71id=0;
$roomname="ROOM 1";
break;
case "room2":
$hd71id=1;
$roomname="ROOM 2";
break;
case "room3":
$hd71id=2;
$roomname="ROOM 3";
break;
case "room4":
$hd71id=3;
$roomname="ROOM 4";
break;
case "room5":
$hd71id=4;
$roomname="ROOM 5";
break;
case "room6":
$hd71id=5;
$roomname="ROOM 6";
break;
case "room7":
$hd71id=6;
$roomname="ROOM 7";
break;
case "room8":
$hd71id=7;
$roomname="ROOM 8";
break;
case "room9":
$hd71id=8;
$roomname="ROOM 9";
break;
case "room10":
$hd71id=9;
$roomname="ROOM 10";
break;
case "room11":
$hd71id=10;
$roomname="ROOM 11";
break;
case "room12":
$hd71id=11;
$roomname="ROOM 12";
break;
case "room13":
$hd71id=12;
$roomname="ROOM 13";
break;
case "room14":
$hd71id=13;
$roomname="ROOM 14";
break;
case "room15":
$hd71id=14;
$roomname="ROOM 15";
break;
case "room16":
$hd71id=15;
$roomname="ROOM 16";
break;
case "room17":
$hd71id=16;
$roomname="ROOM 17";
break;
case "room18":
$hd71id=17;
$roomname="實驗室 1";
break;
case "room19":
$hd71id=18;
$roomname="實驗室 2";
break;
case "room20":
$hd71id=19;
$roomname="實驗室 3";
break;
}


$conn = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database, $conn);
$querysql = "SELECT * FROM hd71_v61 where savetime ";
$querysql .= " between '".$_POST["byear"]."-";
$querysql .= $_POST["bmonth"]."-";
$querysql .= $_POST["bday"]. " ";
$querysql .= $_POST["bhour"].":";
$querysql .= $_POST["bmin"].":00' and '";
$querysql .= $_POST["eyear"]."-";
$querysql .= $_POST["emonth"]."-";
$querysql .= $_POST["eday"]." ";
$querysql .= $_POST["ehour"].":";
$querysql .= $_POST["emin"].":59' and hd71id='";
$querysql .= $hd71id ."'";
if ($kdebug==1)
{ echo $querysql."
"; }

$rs = mysql_query($querysql, $conn) or die(mysql_error());
$row_rs = mysql_fetch_assoc($rs);
//
//
//t1 檢查t1是否被勾選
if (isset($_POST["t1"])){
if ($_POST["t1"] == "t1checked") {
$lineT1 = new line(1,'0x0099CC');
$lineT1->key('T1',10); }
}
//===================================================================================
//
//
//t2 檢查t2是否被勾選
if (isset($_POST["t2"])){
if ($_POST["t2"] == "t2checked") {
$lineT2 = new line(1,'0xCE0000');
$lineT2->key('T2',10); }
}
//===================================================================================
//
//
//
//t3 檢查t3是否被勾選
if (isset($_POST["t3"])){
if ($_POST["t3"] == "t3checked") {
$lineT3 = new line(1,'0x9900FF');
$lineT3->key('T3',10); }
}
//===================================================================================
//t4檢查t4是否被勾選
if (isset($_POST["t4"])){
if ($_POST["t4"] == "t4checked") {
$lineT4 = new line(1,'0x999999');
$lineT4->key('T4',10); }
}
//===================================================================================
//
//temm檢查temm是否被勾選
if (isset($_POST["temm"])){
if ($_POST["temm"] == "temmchecked") {
$lineTemm = new line(1,'0x009999');
$lineTemm->key('TEMM',10); }
}
//===================================================================================
//
//SETM 檢查 SETM 是否被勾選
if (isset($_POST["setm"])){
if ($_POST["setm"] == "setmchecked") {
$linesetm = new line(1,'0x000000');
$linesetm->key('SETM',10); }
}
//===================================================================================
//Pco2 檢查 pco2 是否被勾選
if (isset($_POST["pco2"])){
if ($_POST["pco2"] == "pco2checked") {
$linepco2 = new line(1,'0x0099CC');
$linepco2->key('PCO2',10); }
}
//===================================================================================
//setc 檢查 setc 是否被勾選
if (isset($_POST["setc"])){
if ($_POST["setc"] == "setcchecked") {
$linesetc = new line(1,'0x000000');
$linesetc->key('SETC',10); }
}
//===================================================================================
// TWET 檢查 TWET 是否被勾選
if (isset($_POST["twet"])){
if ($_POST["twet"] == "twetchecked") {
$linetwet = new line(1,'0x0000FF');
$linetwet->key('TWET',10); }
}
//===================================================================================
// HUMY 檢查 HUMY 是否被勾選
if (isset($_POST["humy"])){
if ($_POST["humy"] == "humychecked") {
$linehumy = new line(1,'0x0099CC');
$linehumy->key('HUMY',10); }
}
//===================================================================================
//$lineT9 = new line( 1, '0x9933CC'); //寬度,顏色
//KEY('T9',10); 'T9' 左上角說明文字 , 10 : 字型大小
//$lineT9->key( 'T9', 10 );

//$data = array();
$labels = array();

do
{
//
// -------------------------------------------------------------------------
if ($_POST["t1"] == "t1checked")
{ $lineT1->data[]=$row_rs['c5']; }
//--------------------------------------------------------------------------
//
//
// -------------------------------------------------------------------------
if ($_POST["t2"] == "t2checked")
{ $lineT2->data[]=$row_rs['c7']; }
//--------------------------------------------------------------------------
//
// -------------------------------------------------------------------------
if ($_POST["t3"] == "t3checked")
{ $lineT3->data[]=$row_rs['c9']; }
//--------------------------------------------------------------------------
//
// -------------------------------------------------------------------------
if ($_POST["t4"] == "t4checked")
{ $lineT4->data[]=$row_rs['cb']; }
//--------------------------------------------------------------------------
// -------------------------------------------------------------------------
if ($_POST["temm"] == "temmchecked")
{ $lineTemm->data[]=$row_rs['cd']; }
//--------------------------------------------------------------------------
// -------------------------------------------------------------------------
if ($_POST["setm"] == "setmchecked")
{ $linesetm->data[]=$row_rs['c1']; }
//--------------------------------------------------------------------------
// -------------------------------------------------------------------------
if ($_POST["pco2"] == "pco2checked")
{ $linepco2->data[]=$row_rs['d1']; }
//--------------------------------------------------------------------------
// -------------------------------------------------------------------------
if ($_POST["setc"] == "setcchecked")
{ $linesetc->data[]=$row_rs['c3']; }
//--------------------------------------------------------------------------
// -------------------------------------------------------------------------
if ($_POST["twet"] == "twetchecked")
{ $linetwet->data[]=$row_rs['d3']; }
//--------------------------------------------------------------------------
// -------------------------------------------------------------------------
if ($_POST["humy"] == "humychecked")
{ $linehumy->data[]=$row_rs['cf']; }
//--------------------------------------------------------------------------
//$lineT9->data[]=$row_rs['c5'];

$labels[] = $row_rs['savetime'];

} while ($row_rs = mysql_fetch_assoc($rs));

//--------------------------------------------------------------------
mysql_close($conn);

//
// ----
//
$g = new graph();
$m_title=$roomname . " 曲線圖".$_POST["byear"]."-".$_POST["bmonth"]."-";
$m_title .= $_POST["bday"]. " " . $_POST["bhour"].":" .$_POST["bmin"].":00 ~ ";
$m_title .= $_POST["eyear"]."-" . $_POST["emonth"]."-" . $_POST["eday"]." ";
$m_title .= $_POST["ehour"].":" . $_POST["emin"].":59";
$g->title( $m_title, '{font-size: 18px; color: #A0A0A0;}' );
//Default string is: "#x_label#
#val#" \n
//需要判斷目前顯示溫度,溼度%,co2(ppm)

$g->set_tool_tip( '#x_label#
#val#度' );

if ($_POST["pco2"] == "pco2checked")
{ $g->set_tool_tip( '#x_label#
#val#ppm' ); }
//-------------------------------------------------------------------------------------
if ($_POST["humy"] == "humychecked")
{ $g->set_tool_tip( '#x_label#
#val#%' ); }
//-------------------------------------------------------------------------------------
//

// set the X axis labels
$g->set_x_labels( $labels );

//$g->set_data( $data );
//$g->bar_sketch( 50, 6, '#99FF00', '#7030A0', '% Complete', 10 );

//
// add the bar object to the graph
//
//t1 若被checked , 秀出t1
//
if ($_POST["t1"] == "t1checked")
{ $g->data_sets[] = $lineT1; }
//--------------------------------------------------------------------

//t2 若被checked , 秀出t2
//
if ($_POST["t2"] == "t2checked")
{ $g->data_sets[] = $lineT2; }
//--------------------------------------------------------------------
//t3 若被checked , 秀出t3
//
if ($_POST["t3"] == "t3checked")
{ $g->data_sets[] = $lineT3; }
//--------------------------------------------------------------------
//t4 若被checked , 秀出t4
//
if ($_POST["t4"] == "t4checked")
{ $g->data_sets[] = $lineT4; }
//--------------------------------------------------------------------
//temm 若被checked , 秀出temm
//
if ($_POST["temm"] == "temmchecked")
{ $g->data_sets[] = $lineTemm; }
//--------------------------------------------------------------------
//setm 若被checked , 秀出setm
//
if ($_POST["setm"] == "setmchecked")
{ $g->data_sets[] = $linesetm; }
//--------------------------------------------------------------------
//pco2 若被checked , 秀出pco2
//
if ($_POST["pco2"] == "pco2checked")
{ $g->data_sets[] = $linepco2; }
//--------------------------------------------------------------------
//setc 若被checked , 秀出setc
//
if ($_POST["setc"] == "setcchecked")
{ $g->data_sets[] = $linesetc; }
//--------------------------------------------------------------------
//twet 若被checked , 秀出twet
//
if ($_POST["twet"] == "twetchecked")
{ $g->data_sets[] = $linetwet; }
//--------------------------------------------------------------------
//humy 若被checked , 秀出 humy
//
if ($_POST["humy"] == "humychecked")
{ $g->data_sets[] = $linehumy; }
//--------------------------------------------------------------------
//$g->data_sets[] = $lineT9;


$g->set_x_label_style( 8, '0x9933CC', 2 , 10 , '#00A000');

$g->set_y_label_style( 10, '#A0A0A0' );
$g->x_axis_colour( '#A0A0A0', '#FFFFFF' );

$g->set_x_legend( 'Time', 10, '#A0A0A0' ); //x軸標註 說明,字型大小,顏色
//--------------------------------------------------------------------------------------------------------------------------------
//需要判斷目前顯示溫度,溼度%,co2(ppm)
$g->set_y_legend( 'Temperature', 10, '#A0A0A0' ); //y軸標註
if ($_POST["pco2"] == "pco2checked")
{ $g->set_y_legend( 'ppm', 10, '#A0A0A0' ); }
if ($_POST["humy"] == "humychecked")
{ $g->set_y_legend( 'Percent', 10, '#A0A0A0' ); }
//-----------------------------------------------------------------------------------------------------------------------------
$g->y_axis_colour( '#A0A0A0', '#FFFFFF' );

//最低溫度可以變更設定
if (isset($_POST["mintemp"])){
$g->set_y_min( $_POST["mintemp"] );}
else {
$g->set_y_min( 0 );}
//=============================================================================
//最高溫度可以變更設定 $_POST["maxtemp"]
if (isset($_POST["maxtemp"]))
{ $g->set_y_max( $_POST["maxtemp"] ); }
else
{ $g->set_y_max( 110 );}
//==============================================================================
$g->y_label_steps( 10 );

$g->set_x_axis_steps( 10 );

//設定曲線圖長寬
$m_width=980;
$m_height=570;
switch ($_POST["dip"]) {
case 1024:
$m_width=980;
$m_height=570;
break;
case 1680:
$m_width=1560;
$m_height=880;
break;
default:
$m_width=980;
$m_height=570;
}
$g->set_width( $m_width );
$g->set_height( $m_height );
/*if (isset($_POST["dip"])){
if ($_POST["dip"]==1024)
{
$g->set_width( 980 );
$g->set_height( 570 );}
if ($_POST["dip"]==1680)
{
$g->set_width( 1560 );
$g->set_height( 880 );}
}
else
{
$g->set_width( 980 );
$g->set_height( 570 );
}*/
//-----------------------------------------------------
$g->set_js_path('../js/');
$g->set_swf_path('/');
$g->set_output_type('js');
echo $g->render();
?>
連線到資料庫抓取資料,就可以將文字資料圖形化,讓看的人相當容易就可以得到數據資訊,
而不是看到一堆文字,還真是好ㄚ!
天天都有不一樣的免費軟體,開放原碼軟體;
我們該為這個世界做些什麼呢?

2008年2月19日 星期二

Visual basic 2003 連接mysql

先到下列網址抓取 Connector/NET 1.0版

http://dev.mysql.com/downloads/connector/net/1.0.html









要抓1.0版的,5.0版以上的是給Visual Studio 2005 or 2008用的
解壓縮後如下



















在mysql connector 1.0\mysql-connector-net-1.0.10.1-noinstall\bin目錄下找到











於visual basic 2003專案中加入 "參考" ,即可享用連線到mysql的樂趣!

因為都是在Windows平台下開發資料庫程式,所以以前都使用MSDE2000A (MS-SQL 免費版)
來當資料庫,可是MSDE2000A有一個限制是,資料庫無法大於2G , 超過後就無法再記錄資料進去;
現在改用MYSQL 就沒有這個問題了,而且又有PHPMYADMIN輔助太美滿了!
再加上 OPEN FLASH CHART 這一個免費的CHART元件,以後就可以在網頁上秀出專業的曲線圖囉!

錯誤訊息216解決方案

(錯誤訊息)Runtime error 216..解決方案
不知道為啥..最近電腦會出現Runtime error 216很多人都說是病毒造成..但應該不是....解決辦法:(本人已成功解決問題)
不知道為啥..最近電腦會出現Runtime error 216很多人都說是病毒造成..但應該不是解決辦法:按開始>>執行輸入regedit>>慢慢點選HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerShellExecuteHooks之後會出現AEB6717E-7E19-11d0-97EE-00C04FD91972(檔名),還會有其它的檔,把其它的都刪除(別刪預設值) 然後再按開始>>執行輸入cmd(一個黑框框)輸入for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1,我建議用複製的貼上時不能用鍵盤(ctrl+v)貼上,要用滑鼠右鍵貼上複製好了它會自動一直跑...慢慢等它跑完,別做其它事,可能要幾分鐘時間等它跑完後,最後只要重開機就ok了,開機完還要重新設定時間喔finish!!!!!!本文引用(ggrocket的地盤)小弟在此謝....http://www.wretch.cc/blog/ggrocket&article_id=6983955

重新註冊所有dll檔

開一個DOS視窗 輸入下列命令:
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

使用時機: 常常出現記憶體不得為唯讀.... 之錯誤訊息時

無法複製、貼上檔案

為什麼我的電腦開機後會自動倒數關機,且無法複製、貼上檔案?
A:
如果您使用的 Windows XP 作業系統開機使用一陣子後,出現一倒數計秒畫面,並自動關機,或是您使用的 Windows 2000 作業系統開機後出現異常程式中止訊息,且無法正常的複製、貼上檔案,那麼您的電腦可能是中了 W32.Blaster 這隻病毒。這隻病毒主要是使用微軟作業系統中的 漏洞 進入您的系統。請參閱 諾頓趨勢 所提供的相關資訊。本中心將上述資訊整理後的解法如下:
如果您使用的是 Windows XP...
請下載 繁體中文版英文版 修正程式(視您的作業系統語言而定)。
您可能沒有辦法在正常開機的狀況下使用本修正程式。所以請您將修正程式拷貝至您的電腦後, 重新以「安全模式」的方式啟動電腦(Windows 開機前按 F8)。
執行並安裝修正程式。
重開機後,檢查 Registry 鍵值 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 內是否有 "windows auto update"="msblast.exe"之資訊。若有,將其移除。
搜尋所有磁碟機內是否有 "msblast.exe" 檔,並將其刪除。
如果您使用的是 Windows 2000...
如果您的 Windows 2000 版本在 SP2 (含)以上,您可下載
繁體中文版
英文版 修正程式(視您的作業系統語言而定)。
若您的 Windows 2000 並非 SP2 (含)以上之版本,請先安裝新版的 Service Pack。
執行並安裝 Service Pack 和修正程式。Windows 2000 應該可以在一般模式下進行修正,若您無法在一般模式下進行修正,請使用安全模式。
重開機後,檢查 Registry 鍵值 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 內是否有 "windows auto update"="msblast.exe"之資訊。若有,將其移除。
搜尋所有磁碟機內是否有 "msblast.exe" 檔,並將其刪除。

剪下,貼上無法使用

Windows 現在必須重新啟動,因為 Remote Procedure Call 已經意外終止
適用範圍: Windows XP、Windows 2000
提醒:
本例狀況為病毒,病毒改版很快,本例已成歷史,僅供參考。隨時更新病毒碼與修補作業系統漏洞,才是好習慣。
 
問題:
我的Windows XP 在開機幾分鐘後,就會出現下面這樣的訊息,然後就新開機,我重灌之後還是一樣會發生,請問是什麼原因?是硬體故障嗎?
The system is shutting down. Please save all work in process and log off. Any unsaved changes will be lost. This shutdown was initated by NT AUTHORY\SYSTEM
MessageWindows 現在必須重新啟動,因為 Remote Procedure Call 已經意外終止
回答:
這是Blaster病毒(W32.Blaster.Worm,依 Symantec 定義)的影響,他用RPC,Remote Procedure Call 的漏洞進行攻擊(註一)。
已感染電腦的主要之症狀:
無預期的重新開機
在電腦裡可以找到 mcblast.exe、penis32.exe、teekids.exe 其中之一的病毒檔案
新增/移除程式內一片空白
剪下、貼上無法使用
開啟 Microsoft Office 軟體可能出現 DLL 錯誤
系統極不穩定
電腦速度變慢,經常出現記憶體不足。
也可能會出現 svchost 錯誤,windows 即將關閉這一類的訊息,重新開機後,可短暫恢復正常,但不就又出現 svchost 錯誤。 如果僅出現一次,表示你的電腦雖然沒有修補,但病毒攻擊失敗,病毒以感染XP方式攻擊2000的電腦(他沒有能力知道遠端的作業系統,他只是靠猜測),雖造成 svchost 當掉,但並未感染。若此時你仍無警覺,仍不修補,待下次病毒猜對了你的作業系統,就會感染成功了。
這個病毒只會影響以Windows NT 技術為核心的作業系統(Windows NT、2000、XP、Server 2003),Windows 95、98、Me 不受影響。
解決方法:
目前 Symantec 已經推出移除工具,可以到 Symantec 網站下載執行這個工具:http://securityresponse.symantec.com/avcenter/venc/
data/w32.blaster.worm.removal.tool.html
原則上,直接執行 FixBlast.exe 就可了,但還是建議你還是看一下 Symantec 網頁上的說明,Windows XP 的使用者請先關閉系統還原功能。
移除後,務必安裝最新的安全性更新,否則一切等於做白工,因為這個 blaster 病毒是利用系統漏洞進行攻擊,你不把洞補起來,是永遠躲不掉他的。
由於已被感染,可能會沒有辦法透過網路下載修正檔,或是不停的出現重新開機的現象導致無法下載或順利執行修復程式,如果你已經沒有辦法下載移除工具或新的病毒定義來移除的話,只好手動移除。
手動移除方法:
為安全起見,在掃描病毒時請拔下網路線,需要下載更新檔案時再接回網路線。
開始>>執行,輸入 services.msc 按確定,找到「Remote Procedure Call (RPC)」(註二),在上面按滑鼠右鍵選內容,到「修復」,將第一次、第二次、後續失敗全部改成「重新啟動服務」(原本是重新啟動電腦),按確定。這個動作的目的是避免不斷重新開機,讓你有時間進行修復的動作。
若你的作業系統是 Windows XP,請關閉系統還原的功能。如何關閉 Windows XP 的系統還原功能:
在我的電腦圖示上按滑鼠右鍵選內容,到「系統還原」頁,勾「關閉所有磁碟上的系統還原」,按確定。
同時按 CTRL、ALT、DEL 三鍵,按工作管理員,以便叫出工作管理員,到「處理程序」頁,去找「msblast.exe」 (或 penis32.exe、或 teekids.exe 這些是變種 ),你可以按一下上面的「影像名稱」,這樣就會照字母排序,會比較容易找到。
找到「msblast.exe」後(或 penis32.exe、或 teekids.exe ),用滑鼠在上面點一下(代表選取的意思),按「結束處理程序」
關閉工作管理員。
搜尋病毒檔 msblast.exe,應該是在 windows 或 winnt 的system32 資料夾下,把他刪除。
執行登錄編輯程式,刪除被病毒加入的登錄碼。按「開始」,到「執行」,輸入 regedit 按確定。
到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
一開機就載入的程式名單會放在這邊,所以病毒名單也是放在這裡,一開機就會載入執行,我們要把他從名單中清除。
在 windows auto update 上按滑鼠右鍵選刪除。
關閉登錄編輯程式。
下載微軟在2003年七月份所發佈的 MS03-026 號重大安全性更新,非常重要,關鍵性的漏洞,病毒利用此缺陷進行攻擊。
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/MS03-026.asp
如有安裝防毒軟體,請下載最新病毒碼,並徹底掃描,再檢查一次電腦以策安全。
Windows Update 網站下載所有重大更新,並養成定期檢查重大更新的習慣,修補系統漏洞,以預防變種病毒或其他病毒利用系統的安全性瑕疵進行攻擊。
若是XP,建議開啟 Windopws XP 防火牆可降低被這類病毒的攻擊的機率,其他作業系統可安裝 Zone Alarm ( www.zonelabs.com )這套免費的防火牆軟體,或是其他品牌的防火牆軟體 ,有些防毒軟體內附防火牆的功能,這也是可以使用的。
最後還是要提醒大家,一定要經常利用「自動更新」(註三)或 Windows Update 下載最新的重大更新,這也是我一直強調的一件事。
如果平常就透過自動更新的功能,下載安全性更新,則在「新增/移除程式」裡會找到一項「Windows XP (或 2000) Hotfix-KB823980 」,這就是編號為MS03-026 的安全性更新。若你在你的新增移除程式裡,可以找到這一項,表示你的習慣很好,都有留意 Windows XP 自動更新的提醒。
MS03-026 並不算是最新的漏洞,修補程式已經推出快一個月了,在七月中旬就已經放上 Windows Update 網站,同時 Windows XP (或 Windows 2000)作業系統的「自動更新」也會提醒你要安裝他。
但仍有太多的人都無視安全性更新的重要性,所以仍有不少電腦受到這隻病毒的侵襲。如果你有養成經常到 Windows Update 網站下載安全性新的話,或是利用自動更新的功能安裝這些修補程式,這隻病毒就與你絕緣了。
 
註一:
關於RPC安全性漏洞,請參考為微軟網站的說明:
http://support.microsoft.com/?kbid=823980

註二:
「Remote Procedure Call (RPC)」與「Remote Procedure Call (RPC) Locator」是不一樣的,請不要更動「Remote Procedure Call (RPC) Locator」的內容設定。
註三:
在 Windows XP 中,要如何開啟「自動更新」的功能?
按「開始」,在我的電腦圖示上按滑鼠右鍵選內容,到「自動更新」。
勾「將我的電腦保持在最新狀態....」
選擇「自動下載更新並在準備好安裝時通知我」