小功能隐藏着大学问---windows的ACL带来的挑战
生活随笔
收集整理的這篇文章主要介紹了
小功能隐藏着大学问---windows的ACL带来的挑战
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
為什么說這個功能小呢?1.此功能只是在用戶裝了某一軟件時才用得著,用戶裝這個軟件的可能性很小;2.此功能只需要修改一處注冊表鍵值;
于是這樣簡單實現(xiàn)了:在一個windows服務(wù)程序中調(diào)用一個修改注冊表鍵值的方法進(jìn)行修改,單元測試,這個方法很成功。但是在以服務(wù)運行的方式進(jìn)行的測試中,打開此處注冊表的方法一直報“找不到注冊表路徑”的錯誤。諸位看官,此處注冊表的根鍵為HKEY_CURRENT_USER,大家明白為什么了嗎?“是的,與windows的ACL有關(guān),windows服務(wù)是以系統(tǒng)權(quán)限運行的,在系統(tǒng)權(quán)限中,沒有HKEY_CURRENT_USER這個鍵。”
解決方案:1.操作HKEY_USERSHKEY_USERS這個根鍵可是包含了所有用戶的一些信息的,和相應(yīng)的HKEY_CURRENT_USER剛好一一對應(yīng),而且我們要操作的Software鍵就在其中,于是就利用他來對每一個用戶的Software鍵下的某個鍵值進(jìn)行操作。但是我們這個功能得考慮一點,用戶一旦裝上這個軟件后就會在Software鍵下創(chuàng)建某一鍵,而我們必須要在短時間內(nèi)改寫此處鍵的某個值,但是我們根本不知道用戶什么時候裝啊!
2.注冊表監(jiān)控RegNotifyChangeKeyValue這個方法剛好能滿足我們,利用windows的消息機(jī)制我們可以做到實時監(jiān)控各個USER下的注冊表改變情況,然后利用回調(diào)函數(shù)來實現(xiàn)修改相應(yīng)的鍵值。但是當(dāng)嘗試監(jiān)控Software鍵變化時,發(fā)現(xiàn)Software鍵一直有變化的消息,頻繁到感覺只有1秒。想想我們總不至于這么頻繁的操作注冊表吧。
3.設(shè)置定時器但是我們可以這樣做,采用輪詢的方式遍歷HKEY_USERS下每一個用戶,然后嘗試打開我們要操作的鍵值,如果不能打開說明此用戶未安裝此軟件,反之用戶一定安裝了此軟件,我們就可以改寫此鍵值來實現(xiàn)我們的功能。定時器的值我們可以自己設(shè)定,至少不用那么頻繁的去操作注冊表了。
(思考:關(guān)于權(quán)限這一塊windows提供了方法可以模仿當(dāng)前用戶權(quán)限)
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生
于是這樣簡單實現(xiàn)了:在一個windows服務(wù)程序中調(diào)用一個修改注冊表鍵值的方法進(jìn)行修改,單元測試,這個方法很成功。但是在以服務(wù)運行的方式進(jìn)行的測試中,打開此處注冊表的方法一直報“找不到注冊表路徑”的錯誤。諸位看官,此處注冊表的根鍵為HKEY_CURRENT_USER,大家明白為什么了嗎?“是的,與windows的ACL有關(guān),windows服務(wù)是以系統(tǒng)權(quán)限運行的,在系統(tǒng)權(quán)限中,沒有HKEY_CURRENT_USER這個鍵。”
解決方案:1.操作HKEY_USERSHKEY_USERS這個根鍵可是包含了所有用戶的一些信息的,和相應(yīng)的HKEY_CURRENT_USER剛好一一對應(yīng),而且我們要操作的Software鍵就在其中,于是就利用他來對每一個用戶的Software鍵下的某個鍵值進(jìn)行操作。但是我們這個功能得考慮一點,用戶一旦裝上這個軟件后就會在Software鍵下創(chuàng)建某一鍵,而我們必須要在短時間內(nèi)改寫此處鍵的某個值,但是我們根本不知道用戶什么時候裝啊!
2.注冊表監(jiān)控RegNotifyChangeKeyValue這個方法剛好能滿足我們,利用windows的消息機(jī)制我們可以做到實時監(jiān)控各個USER下的注冊表改變情況,然后利用回調(diào)函數(shù)來實現(xiàn)修改相應(yīng)的鍵值。但是當(dāng)嘗試監(jiān)控Software鍵變化時,發(fā)現(xiàn)Software鍵一直有變化的消息,頻繁到感覺只有1秒。想想我們總不至于這么頻繁的操作注冊表吧。
3.設(shè)置定時器但是我們可以這樣做,采用輪詢的方式遍歷HKEY_USERS下每一個用戶,然后嘗試打開我們要操作的鍵值,如果不能打開說明此用戶未安裝此軟件,反之用戶一定安裝了此軟件,我們就可以改寫此鍵值來實現(xiàn)我們的功能。定時器的值我們可以自己設(shè)定,至少不用那么頻繁的去操作注冊表了。
(思考:關(guān)于權(quán)限這一塊windows提供了方法可以模仿當(dāng)前用戶權(quán)限)
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生
總結(jié)
以上是生活随笔為你收集整理的小功能隐藏着大学问---windows的ACL带来的挑战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cisco 2960 交换机密码设置
- 下一篇: QGridLayout比例