關於電腦上的知識, 如 Linux, Perl, C/C++, C# …

2009年9月28日 星期一

想找到工作管理員裡面程式的位置

問題來源:

問題內容:
想找到工作管理員 >> 處理程序 裡面一些在跑的程式

感覺有些跟本沒用到

關掉也沒差別

可是每次都要關掉好麻煩...

有些還是不知道是什麼東西

不知道有沒有什麼辦法可以找到這些程式的位子
2009-09-23 22:18:42 補充
我敢關的 都是沒問題我還看的懂得....

有些 是關掉之後沒事 也找不到 他的位子?

問題答案:
首先您需要兩個工具,下載後,解壓縮即可執行(不需要安裝)
1、Process Explorer
中文化下載:http://por.tw/f2blog/index.php?load=read&id=89
軟體王下載:http://www.softking.com.tw/soft/clickcount.asp?fid3=18850
官方網址:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
2、Autoruns
中文化下載:http://por.tw/f2blog/index.php?load=read&id=310
軟體王下載:http://www.softking.com.tw/soft/clickcount.asp?fid3=23758
官方網址:http://technet.microsoft.com/en-us/sysinternals/bb963902.aspx

啟動 Process Explorer:
您會看到比「工作管理員」顯示更詳細的資訊,
而且是使用樹狀結構呈現,其階層代表是父行程、子行程的關係,
簡單說就是上一層的程式執行了(或叫起、帶起)下一層的程式。

系統服務:
在「services.exe」階層下的都是「系統服務」程式,
就好不要嚐試直接從「Process Explorer」把「服務」殺掉,以免當機或造成系統不正常
http://img42.yfrog.com/i/procexp01.png/

一般應用程式:
剛開機後,會看到「explorer.exe」(檔案總管)階層下的就是一般開機會自動執行的程式,
從「Process Explorer」把一般程式殺掉,
比較不會出現系統方面的大問題(但如果要這麼做的話,所有風險請自行負責)。
http://img137.yfrog.com/i/procexp02.png/

如何查看執行檔所在的路徑:
雙擊清單中的程式項目,即可查看詳細的程式資訊,其中包含「路徑」
http://img126.yfrog.com/i/procexp03.png/

啟動 Autoruns:
可以看到各種於開機時會被系統載入的各種程式、dll、驅動程式…等

系統服務:
不想啟動的服務,可取消勾選,那麼於下次開機時,就不會被啟動了。
http://img121.yfrog.com/i/autoruns02.png/

一般應用程式:
不想在開機時自動啟動的一般程式,可取消勾選,那麼於下次開機時,就不會被啟動了。
http://img169.yfrog.com/i/autoruns01.png/

2009年9月24日 星期四

KixForms.dll not found 可能權限不足

問題來源:

問題內容:
於解壓縮並執行P_clin的Iclean 出現說 KixForms.dll not found 可能權限不足,請以系統管理員身分執行此程式.......可是在下就是以系統管理員的權限進入VISTA的呀!

請電腦高手們指導.......... 感恩!


問題答案:
KixForms 是一個專為 KiXtart 寫的 ActiveX 元件,
可以讓一般文字輸出的 Script 語言也可以產生視窗界面,
但是不只有 KiXtart 可以使用,
一般常見的 VBScript, Jscript, Perl , Ruby …等,
只要可以使用 ActiveX 元件的 Scripts,
都可以使用 KixForms

您可以到 KixForms 的網站下載,
有分為傳統版本:「KiXforms Classic」
及.Net版本:「KiXforms.NET」(如果您有安裝 .Net 的話)

下載完解壓縮,
可以有兩種安裝方式:

一、使用執行檔安裝:
找到「KiXforms.msi」後,
執行「KiXforms.msi」進行安裝。
http://img43.yfrog.com/i/kixformssetup.png/

二、自己註冊 dll
將「KixForms.dll」複製到「%SystemRoot%\system32 \」(一般而言,就是「C:\WINDOWS\system32\」),
http://img225.yfrog.com/i/kixformscp2system32.png/

開啟命令提示字元:
於「開始」→「執行」→輸入「cmd」→點擊「確定」
http://img200.yfrog.com/i/executew.png/

再輸入「regsvr32 kixforms.dll」註冊
http://img17.yfrog.com/i/regkixforms.png/

然後再試試看問題解決了沒

KixForms 下載頁:http://www.kixforms.org/assets/index.htm
KixForms 介紹及常見問題:http://www.kixforms.org/docs/introduction.htm

2009年9月23日 星期三

幫我看這個網址的聯絡Email;(我沒有outlook)

問題來源:

問題內容:
http://www.doctorcher.com/frame-chinese.htm
這網址的左下角有"與我們聯絡"但是我沒有microsoft outlook所以請哪為幫我看一下Email的網址是多少
因為這問題太簡單所以我會選第一位或是第一位回答下面的加分題者@@

加分題:
沒有microsoft outlook如何看該網址Email(不能在該網址按右鍵)


問題答案:
在瀏覽器的最下面有所謂的狀態列,只要把滑鼠移到超連結上,就會秀在狀態列上
如下圖所示,可看到電子郵件信箱
http://img97.yfrog.com/i/emailaddress01.png/

開啟命令提示字元:
於「開始」→「執行」→輸入「cmd」→點擊「確定」
http://img200.yfrog.com/i/executew.png/

出現一個「命令提示字元」
如有需要記錄原先的設定值時,可先輸入「ftype MailTo」,查看設定,以後可以回復原有的設定。
然後再輸入「ftype MailTo="%ComSpec%" /k echo "%1"」
http://img97.yfrog.com/i/cmdprompt01.png/

設定完成後,以後只要在瀏覽器上,點擊連絡人之類的超連結,就會跳出一個「命令提示字元」,
裡面就看得到電子郵件信箱了。
http://img28.yfrog.com/i/cmdprompt02.png/

請問如何寫關於del的批次檔?

問題來源:

問題內容:
我有一個資料夾,會備份每天的資料,這個資料夾裡面有每天的子資料夾,格式如下:
備份資料夾=>0101、0102、0103…1231,裡面裝著每天的備份資料,但我想做一個批次檔來刪除三個月前的資料,例如:
今天9月21,我要刪掉6月21以前的備份,但我子資料夾必須留著,我要刪的只有裡面的檔案,請問各位大大,我該如何寫這樣的批次檔呢?

問題答案:
分成兩個部份來回答:

1、DelOld.cmd:
@echo off
cscript /nologo ListOldFolder.vbs log > FolderList.txt
for /f %%f in (FolderList.txt) do (
rd /s /q "%%f"
if not exist "%%f" md "%%f"
)

2、ListOldFolder.vbs:
' ************************************************************************
' * Modification history
' * Date Level Author Description
' * ---------- ----- ------------ ------------------------------------
' * 2009/09/23 P0.00 Eric Su Initial Release
' *
' ************************************************************************
' Eric Su 的部落格:http://sn.im/e7q0c、http://www.pushba.com/View.aspx?gid=7a0bcaa2
' ************************************************************************

'Usage : ListOldFolder.vbs log_path keep_mons
Const StdOut = 1
Dim objArgs, where, mons
Set objArgs = WScript.Arguments

where = "log"
mons = 3
'讀取前二個參數,省略時,保留 3 個月資料
If objArgs.Count >= 1 Then
where = objArgs(0)
End If

If objArgs.Count >= 2 Then
mons = objArgs(1)
End If

DeleteFilesBymons where, mons
Set objArgs = Nothing

Sub DeleteFilesByMons(where, keepMons)
Dim fso, folder, sf, f
Dim aDay, today

today = Now
aDay = DateAdd("m", -keepMons, today)
today = Right("00" & Month(today), 2) & Right("00" & Day(today), 2)
aDay = Right("00" & Month(aDay), 2) & Right("00" & Day(aDay), 2)

Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(where) Then
Set folder = fso.GetFolder(where)
Set sf = folder.SubFolders
If aDay < today Then
For Each f In sf
If f.Name <= aDay Or f.Name > today Then
Output(f)
End If
Next
Else
For Each f In sf
If f.Name <= aDay And f.Name > today Then
Output(f)
End If
Next
End If
End If

Set f = Nothing
Set sf = Nothing
Set folder = Nothing
Set fso = Nothing
End Sub

Sub Output(where)
Dim fso, sout
Set fso = CreateObject("Scripting.FileSystemObject")
Set sout = fso.GetStandardStream(StdOut)
sout.WriteLine where.Path

Set sout = Nothing
Set fso = Nothing
End Sub


2009年9月22日 星期二

如何在開機後自動執行”自動關機”程式?

問題來源:

問題內容:
如何在開機後自動執行"自動關機"程式?
我想要在每次開機後一段時間讓電腦自動執行"自動關機"程式,而我又不想下載網路上所提供的自動關機軟體,只想在"開始"狀態下的"執行"寫入執行指令, 因為電腦平時不是本人在用的而這樣為的是不要讓使用者一直沉迷電腦遊戲,所以各位大大是否能為我解答這個困難.......非常感激

補充:
我若是要設定每天固定開機一段時間就執行關機動作的話輸入指令要如何填寫呢?????

補充:
我若是要設定每天固定開機一段時間就執行關機動作的話輸入指令要如何填寫呢?????而我能不能在"開始"狀態下的"執行"寫入一次指令就好了,因為我不 想要每次開機都要重新輸入一次,畢竟開機的人並不完全都是我,我總不能在他前面輸入指令給他看吧,這樣不是破功了嗎.....因為我最終的目的是要再他不 知道的情況下牽制他沉迷遊戲當中,希望有厲害的大大能幫我這個忙.....真的非常感激

問題答案:
把以下範例存成 xxxx.vbs,然後放到啟動的目錄下即可。
如:
全部的使用者都會執行:「C:\Documents and Settings\All Users\「開始」功能表\程式集\啟動」

特定的使用者才會執行:「C:\Documents and Settings\【使用者名字】\「開始」功能表\程式集\啟動」
http://img132.yfrog.com/i/startup01.png/

不會有任何跡象的版本:
Option Explicit

Const WindowStyle_Hidden = 0
Dim objShell
Dim strShutdown

strShutdown = "shutdown -s -t 0 -f"

WScript.Sleep (2 * 60 * 60 * 1000) '休息兩小時,單位是毫秒
set objShell = CreateObject("WScript.Shell")
objShell.Run strShutdown, WindowStyle_Hidden

Wscript.Quit

假裝被駭客入侵的版本:
Option Explicit

Const WindowStyle_Hidden = 0
Const WindowStyle_Activates = 1
Dim objShell
Dim strShutdown
Dim sCmd
Dim sTitle
Dim i, char

sTitle = "shutdown"
sCmd = "cmd /k title " & sTitle
strShutdown = "shutdown -s -t 6 -f"

WScript.Sleep (2 * 60 * 60 * 1000) '休息兩小時,單位是毫秒
set objShell = CreateObject("WScript.Shell")
objShell.Run strShutdown, WindowStyle_Hidden '先執行 6 秒後關機
objShell.Run sCmd, WindowStyle_Activates

'再模擬有人鍵入要關機的指令
strShutdown = strShutdown & vbNewLine & "exit" & vbNewLine
For i = 1 to Len(strShutdown)
char = Mid(strShutdown, i, 1)
WScript.Sleep(25)
objShell.AppActivate sTitle
objShell.SendKeys char
WScript.Sleep(25)
Next

Wscript.Quit



用system()呼叫外部程式如何限制執行時間

問題來源:

問題內容:
我在windows下用C語言的system("lapurw.exe") ;的指令執行lapur.exe
那現在如果我希望此程式執行超過一定的時間(例如30秒)就自動停止執行(關掉其DOS視窗),並回到原來的程式繼續執行迴圈
請問可以用什麼方法達成?

有看到人家說用CreateProcess或是multithread 和計時器
但是我是初學者 查很久也搞不清楚那要怎麼用T^T
希望可以寫出完整的指令+程式碼
請教教我 謝謝!!!!

問題答案:
#include 

int STDCALL

WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
STARTUPINFO t_StartupInfo = {0};
PROCESS_INFORMATION t_ProcessInformation = {0};
t_StartupInfo.cb = sizeof(t_StartupInfo);
char sCmd[] = "ping 127.0.0.1 -n 21"; //執行 ping 21次 大約 20 秒

BOOL bSuccess = CreateProcess(NULL, sCmd, NULL, NULL,
TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL,
&t_StartupInfo, &t_ProcessInformation);

if (bSuccess)
{

DWORD dwRect = WaitForSingleObject(t_ProcessInformation.hProcess, 5 * 1000); //等 5 秒
switch (dwRect)
{
case WAIT_OBJECT_0: //執行的命令正常結束
break;
case WAIT_TIMEOUT: //超過時間仍未結束時,強制結束
TerminateProcess(t_ProcessInformation.hProcess, 0);
break;
}
}
CloseHandle(t_ProcessInformation.hThread);
CloseHandle(t_ProcessInformation.hProcess);
return 0;
}



2009年9月20日 星期日

請問有關Temp資料夾

問題來源:

問題內容:
我家C槽滿了
請問
C:\Documents and Settings\Administrator\Local Settings\Temp
這個可以刪嗎
雖然在其他知識+有看到相關
不過他們是C:\Temp
我的卻不一樣
請問可以刪嗎?

問題答案:
如何查看您的暫時檔目錄:
到「開始」→「執行」→輸入「%temp%」或「%tmp%」→點擊「確定」後,
應該會出現您的暫時檔存放目錄(如果沒有也沒關係,只是您的系統沒有「%temp%」或「%tmp%」的環境變數)
http://img252.yfrog.com/i/temp01.png/ http://img190.yfrog.com/i/tmp01.png/ http://img188.imageshack.us/img188/9631/arrow0017.gif http://img524.yfrog.com/i/temp02.png/

暫時檔存放目錄,理論上都是可以刪除的,
不過這樣子砍,比較不方便。

建議您使用工具來刪除不必要的檔案:

一、使用 Windows 內建的「磁碟清理工具」
到「開始」→「執行」→輸入「cleanmgr /sageset」→點擊「確定」後,會出現「磁碟清理設定」的畫面,如下:
http://img147.yfrog.com/i/cleanmgr01.png/ http://img188.imageshack.us/img188/9631/arrow0017.gif http://img27.yfrog.com/i/cleanmgr02.png/

選擇您想要清理的項目後,點擊「確定」就設定完成了。

要真正開始清理的話,到「開始」→「執行」→輸入「cleanmgr /sagerun」→點擊「確定」後,就會開始清理系統了。
http://img36.yfrog.com/i/cleanmgr03.png/

至於各個項目要清理的內容,可以參考:http://support.microsoft.com/kb/315246/zh-tw

二、使用「CCleaner」的清 道夫功能:
如果想清除更多垃圾的話,可以參考「CCleaner」,
下載安裝「CCleaner」請看 這裡:http://briian.com/?p=3167

http://img6.yfrog.com/i/ccleaner01.png/

2009年9月19日 星期六

清除無用登錄檔的bat檔

問題來源:

問題內容:
請問各位大大
我想要寫清除無用登錄檔的bat檔
請問要如何寫?
請各位大大不吝指教
若是有知道的大大拜託了,20點雙手奉上<(_ _)>
註:我知道有兔子、CCleaner.....很多綠色的程式,但是我想要用批次檔執行(因為不是自己電腦,不想要在那台電腦裝那麼多的程式)

問題答案:
批次檔本身的指令很少,可以做到的事情是有限地,
大部份的情況下是需要搭配一些作業系統內建的指令,
或其它人開發的命令列工具才能達到較為複雜的功能。

清除無用登錄檔的動作,
就算作者如何保証,但仍然存在著風險,
所以不太可能會有人會開發一個完全不經由人再次確認就自行清除的命令列工具,
因為如果因此造成電腦不正常,後果誰要負責呢?

另外,在 CCleaner 的論壇中,有人也有和您一樣的想法,請看這裡
提問了想要可以自動清除無用的登錄檔機碼,
但是由於安全考量,
目前 CCleaner 只有提供兩個參數。

建議您可以下載免安裝版的 CCleaner,這樣子就不會在別人的電腦中安裝很多軟體,
下載網址:
您可以把解壓縮後的目錄放在隨身碟中,帶著走,
使用時只要直接執行「CCleaner.exe」,而您的所有設定會儲存在「ccleaner.ini」

在批次檔中使用時(請參考 http://docs.piriform.com/ccleaner/advanced-usage/command-line-parameters):
情況一:根據先前的設定,在背景執行清除動作垃圾檔案,執行完畢,就結束程式
@echo off
CCleaner /AUTO

情況二:根據先前的設定,在背景執行清除動作垃圾檔案,執行完畢就關機
@echo off
CCleaner /AUTO /SHUTDOWN


微軟 MSN 的替代方案

問題來源、內容:
由於微軟強迫要更新版本,而新版的 MSN 問題又多。

許多人覺得 MSN 有問題,下載速度慢、更新常失敗、新版容易當、容易被踢出…
如果沒有堅持一定要用微軟的軟體的人,可以考慮以下介紹的 MSN 替代方案。

只是換一個程式,您的帳號及聯絡人清單,依然保持使用原來的,並不會因此而改變。

替 代方案
簡單的說:
就是您除了微軟的 MSN 外,您還有其它的選擇。

複雜的說:
其實 MSN 是一個應用主從式架構(Client/Server)的程式,解釋請看這裡
這個概念,就好像是我們在瀏覽奇摩網頁時,
可以用不同的瀏覽器(如:IE, Firefox, Green Browser…)來觀看是類似的道理。

優點:
1、不會被強制性的做一些奇怪的動作,如:強制更新版本
2、較微軟的 MSN 省記憶,也不需搭配作業系統更新才能使用
3、比較不會中毒,因為寫病毒的人,都是針對微軟的 MSN 的執行檔
4、開發者能力不輸微軟工程師,較不易出問題,而且由於要跨不同作業系統,當然要更穩定才行


以下介紹三種可以免安裝(也有一般的安裝方式)的 MSN 替代品:『aMSN』、 『Emesene』、 『Pidgin

aMSN』: 操作介面最像 MSN ,介紹請看:http://www.pushba.com/View.aspx?gid=7a13f3f4
http://img32.imageshack.us/img32/7378/talk01.png

Emesene』: 介紹請看:http://www.pushba.com/View.aspx?gid=236b3449
Free image hosting www.PicFury.com [Free Image Hosting]

Pidgin』: 歷史最優久,不過操作介面看起來很陽春,介紹請看:http://www.pushba.com/View.aspx?gid=7f294602
http://img519.yfrog.com/i/93274946.png/



[綠色,免安裝、免解壓縮]介紹 Pidgin 通訊軟體

Pidgin 是一個用 CC#PerlPythonTCL 開發的 MSN 客戶端。它是一個免費的 MSN 移動客戶端或山寨版的 MSN,可以直接從 USB 設備直接執行。它提供了許多和 MSN 相同的功能。
具體來說, Pidgin 提供了一個標籤聊天、自定義圖標、文件傳輸、離線消息、個人信息、插件和多語言的界面。

軟體資訊:
【軟體名稱】 Pidgin
【軟體版本】 2.6.2
【介面語言】 多國語言
【軟體性質】 免費
【系統支援】 WindowsLinuxMac OS
【官方網站】 這裡
【官方下載】 這裡
【綠色免安裝、免解壓下載】 這裡,(如何下載:請參考這裡

如果擔心有病毒的話,
請參考:[免 費]如何使用多家防毒軟體聯合幫您掃描病毒

比較:

Portable Apps 綠色免安裝 免安裝、免解壓縮版
檔名 PidginPortable_2.6.2.paf.exe Pidgin-2.6.2_yyyymmdd.zip
特別事項 執行『PidginPortable_2.6.2.paf.exe』可選擇要解壓縮的目錄。
  1. 使用 LZMA 壓縮法,不需要先解壓縮就可以使用,類似 UPX 技術
  2. 啟動時,會稍微慢一些
佔用硬碟空間
  1. 「PidginPortable_2.6.2.paf.exe」大小為 14.1 MB
  2. 解壓後佔硬碟空間,大約 50.6 MB(使用安裝檔安裝後,所佔硬碟空間差不多也是這個大小)
  1. 「pidgin.exe」大小為 15.8 MB
  2. 不用解壓縮,可直接執行
全部檔案數 解壓縮後佔用 1244 個檔案,466 個資料夾 4 個檔案
下載處 這裡 這裡
註:
  1. 在 Windows XP,如果不是使用免安裝版的 pidgin,它的設定和對話記錄會存在於「C:\Documents and Settings\【使 用者】\Application Data\.purple\」
  2. 「免安裝、免解壓版」只能放在英文、數字的路徑下,不然無法執行。(例:放在中文、日文…等非英文的路徑下就無法執行)

免安裝、免解壓版中的各個檔案說明:
檔案名稱 功能說明
pidgin.exe 其實這是一個自解壓縮檔,但是不會佔用硬碟空間解壓縮,會解壓縮到記憶體中,然後在執行程式。
startPidgin.cmd
  • 設定要傳遞給 pidgin.exe 的環境變數,使用者可自行修改。
  • 設定對話記錄及其它設定檔的存放目錄:「set HOME=pdigin_settings\.purple」
startPidgin.vbs 唯一功能就是執行「startPidgin.cmd」,但是不會跳出醜醜的「命令提示字元」視窗
startPidgin.exe
  • 執行它就對了
  • 唯一功能就是執行「startPidgin.cmd」,但是不會跳出醜醜的「命令提示字元」視窗
  • 可以為它建立捷徑,以方便執行



好友清單:
http://img182.yfrog.com/i/47696521.png/


設定視窗:

  1. 一定要取消「顯示所收訊息的格式化」的功能,否則和朋友在對話時,會看不到中文
http://img340.yfrog.com/i/37005044.png/

對話範例一:
http://img519.yfrog.com/i/93274946.png/

對話範例二:
http://img142.yfrog.com/i/42623927.png/

2009年9月18日 星期五

BAT set 設定變數的問題

問題來源:

問題內容:
請問一下,在批次檔(BAT)設定變數中,

我可以把變數設成命令嗎?

譬如說:

在同個資料夾下,有個A.TXT

A.TXT內容為C:\Test\

我可以設定變數BBB = A.TXT其中的內容嗎?

set BBB = A.TXT

然後我只要copy B.txt %BBB%

這樣自動就會複製到C:\Test\


另外我想問有辦法把指令設定成變數嗎?

譬如:

我想把dir /b /s a.txt的結果

設定成AAA,請問有辦法這樣做嗎?

問題答案:
分成兩個部份來回答:

1、使用檔案導向,將檔案內容導入環境變數(限制只能讀取第一行內容):
@echo off
set /p BBB=<a.txt
if not exist %BBB% md %BBB%
copy b.txt %BBB%

2、方法和 1 一樣,只是多一個步驟,先將資料導到一個暫時檔:
@echo off
dir /b /s a.txt>$$$
set /p AAA=<$$$
del /q $$$
echo %AAA%


[知識+問題]如何用產生空檔(檔案長度是零)?

問題來源:

問題內容:
我現在用 @dir 123456789.123456789 /b > tmp.bin 可以製造 但是會有額外訊息 '找不到檔案'
用 @dir 123456789.123456789 /b > tmp.bin > nul 還是會有 '找不到檔案', 請問有甚麼正規的方法產生空檔?

補充:
應該是如何用 DOS Command 產生空檔

問題答案:
方法有很多種

1、用複製檔案的方式(如不想看到額外訊息,可將訊息導到 nul 裝置):
copy nul tmp.bin

2、用檔案轉向的方式:
type nul > tmp.bin

3、使用您的方式,只要把錯誤輸出導到 nul 裝置,就不會看到錯誤訊息了
dir 123456789.123456789 /b > tmp.bin 2> nul

4、使用 unix-like 指令(可到這裡下載:http://unxutils.sourceforge.net/):
touch tmp.bin


LinkWithin

Blog Widget by LinkWithin