2012-05-08 20 views
0

我正在嘗試查找對註冊表所做的更改或啓動了哪些進程。例如:如果我更改視窗的資源管理器顯示隱藏的文件和文件夾 - 我想看看哪些註冊表項更改。如何找到更改的註冊表值?

有人建議使用進程監視器,但a)有太多的註冊表訪問,以及b)我找不到任何對註冊表的更改。 (雖然我記得讀它是控制的註冊表的變化)

我這樣做是因爲我然後希望我的程序做同樣的事情。

在C#中的答案會很好。

+0

你正在嘗試從消防水帶飲用。是的,太多的註冊表訪問和太多針對Windows版本的訪問。一個明顯的解決方案是實際使用該文件夾的資源管理器視圖,以便它受到相同更改的影響,否則看起來完全相同。可用於Vista及更高版本,請使用Windows API代碼包在您的應用程序中使用它。 ExplorerBrowser類。 –

+0

@HansPassant感謝您的回覆,但我不明白「使用資源管理器的資源管理器視圖」的意思 - Windows資源管理器或進程資源管理器?你指的是什麼「文件夾」? – ispiro

+0

運行該代碼包中的示例程序來查看我的意思。 –

回答

1

RegNotifyChangeKeyValue()是您需要調用的系統函數。我從來沒有見過任何人嘗試從C#中使用它,但與調用任何其他非託管代碼相比,它不需要更多的麻煩。基本上,你叫它,它在第一次改變後返回,你再次調用它並等待下一個chande。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724892%28v=vs.85%29.aspx

都有其使用的一個相當不錯的描述。

0

http://www.mydigitallife.info/trick-to-enable-show-hidden-files-and-folders-in-windows/

轉到開始菜單,然後點擊運行(Windows Vista和Windows 7使用開始搜索代替)。 鍵入RegEdit,然後按Enter運行註冊表編輯器。 導航到以下注冊表項:

HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \ CURRENTVERSION \ Explorer中\高級\文件夾\隱藏\ SHOWALL

在右窗格中,驗證的CheckedValue值數據REG_DWORD類型。如果不是(例如屬於REG_SZ),則刪除CheckedValue值數據。 如果CheckedValue已被刪除,請創建一個新的DWORD(32位)值並將其命名爲CheckedValue。 雙擊CheckedValue並將其數值數據更改爲1(病毒可能會將其更改爲0或2)。 在相同的註冊表項中,驗證類型值數據是REG_SZ類型,並且具有值數據無線電。如果沒有,請將其設置爲無線電。病毒可能會將其更改爲空白。 設置系統顯示或顯示所有隱藏的文件,文件夾和驅動器,然後檢查是否顯示隱藏的文件和文件夾。

+0

謝謝。但我想要找到這些東西。這僅僅是一個例子。 – ispiro

1

是的,哇,這可能會變得非常棘手,因爲註冊表可能是巨大的。在過去,我會導出註冊表的一個分支,例如HKEY_LOCAL_MACHINE \ SOFTWARE \ InnaTech,然後運行我懷疑在該分支中編輯某些程序的程序,然後再將其導出到另一個文件。如果分支不是很大,那麼我可以通過眼球來區分它,否則我會使用普通的diff程序ala WinDiff來查找任何變化。

+0

聽起來像是一個好主意嘗試。 – ispiro