2010年12月31日 星期五

XP Home上該如何裝IIS呢?

目前因找了一台電腦來安裝版本管理及build 的伺服器,但好死不死該電腦的OS是XP Home 這下好玩了,一堆服務都沒有,以下就是找到如何在XP Home上如何裝IIS。

其實XP Home這個版本並非沒有IIS,只是將其隱藏起來,以下便是主要的三個步驟,讓XP Home具備XP Profession的一些功能。


  1. 打開 C:\Windows\INF\SYSOC.INF,在 [Components] 中,找到這一行
    iis=iis.dll,OcEntry,iis.inf,hide,7
    改為
    iis=iis2.dll,OcEntry,iis2.inf,,7

    這是因為當更新或異動iis.dll時,MS caching機制就會把它修復,所以直接把其改名為iis2.dll較為省事。
  2. 從Win2k Adv Server CD抓取 iis.dl_ 和 iis.in_ 兩個檔。
    進入DOS命令狀態,鍵入:
    EXPAND  IIS.DL_ IIS2.DLL    (copy到 C:\WINDOWS\INF 中。)
    EXPAND  IIS.IN_ IIS2.INF      (copy到 C:\WINDOWS\SYSTEM32\SETUP 中。)
  3. 到控制面板選「新增或移除程式」-「新增/移除Windows元件」,就出現IIS選項,可以安裝了。

    安裝過程中,系統會提示你需要哪些文件。它們可以從MS XP Home CD、Windows Server CD、C:\WINNT\SYSTEM32\INETSRV、C:\Windows\I386等得到(它會告訴你文件名,你只要打開文件搜索就可以找到了,也許CD中有你需要的全部文件)。
上述所有方法目前只能在XP Home版上通過測試,其他版本未知,各位可以自己試試!!!

PS 附註一下


XP Home 原本是沒有 本機安全性原則,怎樣做才會變成有呢?

跟有 XP Pro 電腦的朋友,將在 C:\WINDOWS\system32 資料夾中下列的 5 個檔案複製到 XP HOME 的 C:\WINDOWS\system32 資料夾中。

fde.dll
gpedit.msc
gpedit.dll
gptext.dll
wsecedit.dll

然後點擊 開始 -> 執行 中依次執行以下命令,註冊這 4 個 dll。
regsvr32 fde.dll
regsvr32 gpedit.dll
regsvr32 gptext.dll
regsvr32 wsecedit.dll

再將 XP Pro 的 C:\WINDOWS\INF 資料夾中所有 .adm 的檔案複製並取代 XP HOME 的 C:\WINDOWS\INF 資料夾裏。
點擊 開始 -> 執行,輸入 gpedit.msc 就可以啟動 本機安全性原則。

2010年12月22日 星期三

右鍵選單加入 Open Command Here

常常在處理東西都要到 MS-DOS模式下(Console Command) ,而最常用的方法就是 {Win鍵}+{R} 在輸入CMD 在打指令移到指定目錄,這樣老實說很煩瑣,不過呢MS 有推出一套 Power Toy 可以修改系統在右鍵功選單中加入一個 [Open Command Here] 可以快速的在指定的目錄開啟MS-DOS模式。但每次都要安裝這Power Toy ,不過目前有人把這部份取出來成登錄檔如下

From http://stackoverflow.com/questions/1077814/assigning-a-shortcut-to-open-cmd-here

Windows Registry Editor Version 5.00
;Right click on folder and open up command window[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd1]
@="Open &Command Prompt Here"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd1\command]
@="cmd.exe /k pushd \"%L\""

;Right click on any file and open up command window[HKEY_CLASSES_ROOT\*\shell\cmd1]
@="Open &Command Prompt Here"
[HKEY_CLASSES_ROOT\*\shell\cmd1\command]
@="cmd.exe %1"
將文字copy,存到新檔案,副檔名是reg。
再點兩下就可以執行了。

如果反悔的話,把下面的文字用同樣方法操作就可以回復了。


Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd1]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\cmd1\command]

[-HKEY_CLASSES_ROOT\*\shell\cmd1]
[-HKEY_CLASSES_ROOT\*\shell\cmd1\command]
參考這個網站,共有五種方法,達到這個功能。
http://www.petri.co.il/add_command_prompt_here_shortcut_to_windows_explorer.htm

參考:http://quickteckiteasy.blogspot.com/2010/11/windows-open-command-here.html

2010年5月25日 星期二

讓 Eclipse 加入 Subversion (SVN) 的版本控制功能

讓 Eclipse 加入 Subversion (SVN) 的版本控制功能

http://subclipse.tigris.org/

安裝步驟:

在 Eclipse IDE 中
點選 [說明 > 軟體更新> 尋找和安裝 > 搜尋要安裝的新特性 > 新的遠端網站]
輸入
名稱:SubEclipse
URL:http://subclipse.tigris.org/update

按下 [確定 > 完成]
出現搜尋結果後,勾選 SubEclipse 後按下 [下一步 > 點選接受授權後按下一步 > 完成]
開始進行下載,完成後出現驗證視窗點選 [全部安裝] 完成後重新啟動 Eclipse IDE 就完成安裝。

使用:

在 Eclipse IDE 中點選 [視窗 > 顯示視圖 > 其他]
出現顯示視圖對話框後,選擇 [SVN.SVN 檔案庫] 後按下確定。就會在 Eclipse IDE 中。

去除口中及室內煙味小秘訣

很多人都不喜歡抽二手煙,更不喜歡空間中或是情人的口中有腦人的煙味,
MESON這篇文章就是來教大家一些小秘訣來去除口中及室內煙味

去除室內空間或是辦公室的煙味有好方法
用毛巾蘸些已稀釋的食醋在室內揮舞。
點燃兩支蠟燭,煙味不久即除。
在室內放一碗醋,就能去除煙味。
在室內各個角落掛幾塊濕海綿或幾條濕毛巾,都能去除煙味。
把泡過的廢茶葉渣曬乾,放在房間的角落裏,利用茶葉的物理吸附原理去除煙味;
還可以用毛巾蘸上稀釋了的醋,在室內揮舞數下,對去除煙味也有一定效果;如果用噴霧器噴灑稀醋,效果會更好。
在室內放置活性炭,市面上有賣,可以較好地濾清空氣

如何去除口腔中的煙味

1.清 水
無論健康師、模特兒、明星或名媛都會建議你多飲清水,我每天喝1.5公斤。但如果你以為一杯清水便可除去煙味,你要 的不是健康師而是精神科了,但起碼已沒有其他味道夾雜著。

2.Perrier/Souda
不知是否心理因素,總覺得飲Perrier或Souda的確非常見效,尤其在抽煙時,頗能清新味蕾,再迎新 香味。

3.香口膠/珠/喉糖
大多治標不治本,但其中較喜歡華達喉糖,好味道!

4.甘草
外國賣香煙的地方多數有售,但外形比較國產的幼稚的多。一條條的,比一片片咬起來沒那麼多渣。甘草,據《 本草綱目》記載,效果不錯,但於公眾場合嚼時,有點文體格調或——嘩眾取寵
(5)利刮
呵呵,不要笑。聽說日本人用這種東西的人頗多,在普通的地方很少能買得到,主要的功能就像刷牙,平日裏清潔味蕾所用。有興趣的朋友可以買來試一試喔!
(6)可樂
有不少朋友以為可樂萬能,日灌數瓶不止,上至煮鵝翼排,下至洗衫洗
頭腳都用之。但對不起,可樂對除煙味卻無能為力無論你加十粒青檸,
或加鹽加冰,都不會有任何作用 。
(7)Aveda、Breath Elixir
這一迷你膠瓶說起來很誇張,全天然材料製造,無加添加劑或糖份,剛推出時外國雪茄雜誌評為雪茄客救星。每次拿出來用時,身邊朋友會問:口臭水呀?每次數滴,口氣全消一段時間,不過比香口膠功效要持久的多。

(8)蘋果
絕對私人珍藏,早上第一件事吃一個蘋果,保證悶氣全消是所有消除隔夜煙味方法中最有效的!不信可以試一試喔!

香芹菜:這種草本植物最有助於消除口中的異味,尤其是煙味。如果手邊一時找不到香芹菜,香菜、薄荷也能起到去除口腔異味的作用。為了達到更好的效果,這些東西嚼得時間越長越好,或者用來沏茶喝。此外,上述這幾種草本植物對消化也有好處。

茶葉:茶葉中所含的單寧酸具有殺菌、防止口腔異味的作用:綠茶中豐富的兒茶素和紅茶中的茶黃質是去除口腔異味的有效物質:茶葉中所含的芳香成分,除了可以消除飯後食物殘渣所引起的口腔異味外,還能去除因胃腸功能性障礙和因維生素C攝取不足導致牙齦出血所產生的口腔異味。另外,飲茶會使口腔的自潔能力有所增強。

2010年5月19日 星期三

眼科醫生建議的視窗顏色

之前朋友在問特地去找出來分享給大家
長時間盯著白亮刺眼的視窗眼色,總讓人眼睛容易感到疲累。
最近我在網路論壇上看到了聽說是眼科醫生建議的設定,雖然不知道是不是真由眼科醫生所發覺的,但更改了之後確實看起來比較舒服。
 
  設定方法如下:
一、在桌面點下滑鼠右鍵。
二、在彈出式選單點選「內容」。
三、點選「外觀」頁面。
四、點選「進階」,打開「進皆外觀」的設定視窗。
五、在「項目」的下拉式選單中選取「視窗」選項。
六、在「色彩1」的下拉式選單中選取「其他」選項。
七、輸入以下數值:色調85、濃度90、亮度205,按下「新增自訂色彩」。
八、選擇自訂色彩下的那個淡綠色方塊,按下「確定」。
九、在「進階外觀」及「顯示 內容」視窗中,都按下「確定」離開。
十、設定完畢~

2010年4月27日 星期二

利用長尾夾收納電腦桌上所有的線(網路線、USB線、傳輸線)

利用長尾夾收納電腦桌上所有的線(網路線、USB線、傳輸線): "

David Rudolf Bakker是位相當有創意的生活家,喜歡用簡單方法解決複雜困難的問題,此次他利用便宜易取得的長尾夾輕鬆的將所有電腦桌上可能碰到的線都有條理的收納起來,特別針對插拔式的線路更能有效的利用空間,其做法如下圖。





圖片來自:http://lifehacking.nl/kantoor-tips/nooit-meer-je-usb-kabel-achter-het-bureau-verliezen-voor-e1/


"

Android手機也可以當無線分享器---Barnacle Wifi Tether

Android手機也可以當無線分享器---Barnacle Wifi Tether: "

之前有介紹過Windows Mobile有WMWifiRouter可以將手機模擬成無線分享器,其實Android手機也有WIFI Tether有類似功能的軟體,但是除了一定要ROOT以外還要更新通訊模組,像A688與Acer Liquid這種可以ROOT但沒辦法更新通訊模組的手機就沒辦法使用,這幾天在網路上看到一套不用更新通訊模組的無線分享軟體---Barnacle Wifi Tether可以在VIBO A688與ACER LIQUID使用的軟體,分享給大家,首先去Android Market搜尋'Barnacle'就可以找到Barnacle Wifi Tether:
nEO_IMG_01.jpgnEO_IMG_02.jpg
要執行Barnacle Wifi Tether一定要先ROOT才能使用。

安裝後執行,點選START就可以使用了:
nEO_IMG_03.jpgnEO_IMG_04.jpg

第一次使用時會出現權限提示,ROOT後請選擇'Always Allow',接著就開始執行了:
nEO_IMG_05.jpgnEO_IMG_06.jpg

使用iPhone測試看看,可以連線也可以上網:
IMG_0200.jpgIMG_0201.jpg

Barnacle Wifi Tether也可以設定SSID與連線密碼,只要點選手機的MENU鍵就會顯示SETTING:
nEO_IMG_07.jpg8.gif
▲可以修改SSID名稱,也可以在Wireless Security設定連線密碼。

可設定WEP密碼:
nEO_IMG_09.jpgnEO_IMG_11.jpg

這套軟體是免費的而且設定又簡單,推薦給大家。

"

2010年4月20日 星期二

调用“关闭Windows”窗口

调用“关闭Windows”窗口: "To programmatically shut down Windows, you can use the ShutdownWindows method.
[codes=delphi]uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
shell: Variant;
begin
shell := CreateOleObject('Shell.Application');
shell.ShutdownWindows;
end;[/codes]
Tags - , , "

Get EXE path from window handle

Get EXE path from window handle: "[codes=delphi]uses
PsAPI, TlHelp32;
const
RsSystemIdleProcess = 'System Idle Process';
RsSystemProcess = 'System Process';

function IsWinXP: Boolean;
begin
Result := (Win32Platform = VER_PLATFORM_WIN32_NT) and
(Win32MajorVersion = 5) and (Win32MinorVersion = 1);
end;

function IsWin2k: Boolean;
begin
Result := (Win32MajorVersion >= 5) and
(Win32Platform = VER_PLATFORM_WIN32_NT);
end;

function IsWinNT4: Boolean;
begin
Result := Win32Platform = VER_PLATFORM_WIN32_NT;
Result := Result and (Win32MajorVersion = 4);
end;

function IsWin3X: Boolean;
begin
Result := Win32Platform = VER_PLATFORM_WIN32_NT;
Result := Result and (Win32MajorVersion = 3) and
((Win32MinorVersion = 1) or (Win32MinorVersion = 5) or
(Win32MinorVersion = 51));
end;

function RunningProcessesList(const List: TStrings; FullPath: Boolean): Boolean;

function ProcessFileName(PID: DWORD): string;
var
Handle: THandle;
begin
Result := '';
Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, PID);
if Handle <> 0 then
try
SetLength(Result, MAX_PATH);
if FullPath then
begin
if GetModuleFileNameEx(Handle, 0, PChar(Result), MAX_PATH) > 0 then
SetLength(Result, StrLen(PChar(Result)))
else
Result := '';
end
else
begin
if GetModuleBaseNameA(Handle, 0, PChar(Result), MAX_PATH) > 0 then
SetLength(Result, StrLen(PChar(Result)))
else
Result := '';
end;
finally
CloseHandle(Handle);
end;
end;

function BuildListTH: Boolean;
var
SnapProcHandle: THandle;
ProcEntry: TProcessEntry32;
NextProc: Boolean;
FileName: string;
begin
SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
Result := (SnapProcHandle <> INVALID_HANDLE_VALUE);
if Result then
try
ProcEntry.dwSize := SizeOf(ProcEntry);
NextProc := Process32First(SnapProcHandle, ProcEntry);
while NextProc do
begin
if ProcEntry.th32ProcessID = 0 then
begin
FileName := RsSystemIdleProcess;
end
else
begin
if IsWin2k or IsWinXP then
begin
FileName := ProcessFileName(ProcEntry.th32ProcessID);
if FileName = '' then
FileName := ProcEntry.szExeFile;
end
else
begin
FileName := ProcEntry.szExeFile;
if not FullPath then
FileName := ExtractFileName(FileName);
end;
end;
List.AddObject(FileName, Pointer(ProcEntry.th32ProcessID));
NextProc := Process32Next(SnapProcHandle, ProcEntry);
end;
finally
CloseHandle(SnapProcHandle);
end;
end;

function BuildListPS: Boolean;
var
PIDs: array [0..1024] of DWORD;
Needed: DWORD;
I: Integer;
FileName: string;
begin
Result := EnumProcesses(@PIDs, SizeOf(PIDs), Needed);
if Result then
begin
for I := 0 to (Needed div SizeOf(DWORD)) - 1 do
begin
case PIDs[I] of
0:
FileName := RsSystemIdleProcess;
2:
if IsWinNT4 then
FileName := RsSystemProcess
else
FileName := ProcessFileName(PIDs[I]);
8:
if IsWin2k or IsWinXP then
FileName := RsSystemProcess
else
FileName := ProcessFileName(PIDs[I]);
else
FileName := ProcessFileName(PIDs[I]);
end;
if FileName <> '' then
List.AddObject(FileName, Pointer(PIDs[I]));
end;
end;
end;
begin
if IsWin3X or IsWinNT4 then
Result := BuildListPS
else
Result := BuildListTH;
end;

function GetProcessNameFromWnd(Wnd: HWND): string;
var
List: TStringList;
PID: DWORD;
I: Integer;
begin
Result := '';
if IsWindow(Wnd) then
begin
PID := INVALID_HANDLE_VALUE;
GetWindowThreadProcessId(Wnd, @PID);
List := TStringList.Create;
try
if RunningProcessesList(List, True) then
begin
I := List.IndexOfObject(Pointer(PID));
if I > -1 then
Result := List[I];
end;
finally
List.Free;
end;
end;
end; [/codes]
Tags - , , "