David
发布于 2015-02-04 / 19 阅读 / 0 评论 / 0 点赞

PowerBuilder 註冊表信息一探

Image
突發奇想找下PB裏的最近打開對象列表的保存位置,在項目文件目錄下找不到有用的信息,又去找了下PB的安裝目錄,還是沒找到,系統臨時文件夾木有,我 的文檔也木有的情況下,估計是存在註冊表裏。註冊表很大,但是有搜索功能,所以先用最近打開對象列表中的任意一個來搜索下。
大概按了5-6次“搜索下一個”,貌似找到個有用的。
上路徑
HKEY_USERS\S-1-5-21-XXXXXXXX\Software\Sybase\PowerBuilder\9.0\Workspace\D:$123123.pbw\MRUList
版本號什麼的自己對好入座,很好找。
谷歌了下,這串S-1-5指的是當前登錄用戶的SID,每個用戶都有自己的SID,那問題來了!不是挖掘機,不是藍翔 問題是有哪些地方可以獲取到用戶的SID?
  • 可以從用戶目錄下的NTUSER.DAT獲取,貌似是被序列化的文件,但用戶登錄後,此文件會被系統獨佔,無法打開。
  • 遍曆註冊表
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
    下子項中的ProfileImagePath獲取,這里好像包括已經刪除的用戶。
  • 直接遍曆HKEY_USERS所有子項下
    Software\Microsoft\Windows\CurrentVersion\Explorer中Logon User Name
    的鍵值。
當然,還有其他方法.....另開一篇好了
截圖-145
 右側就是最近打開對象的了,至於MRUList是什麼,那還不簡單,用來存放加載菜單的順序唄。
第一項菜單加載第4條記錄,第二項菜單加載第5條記錄,如此類推,當0-9用完就會接著用英文字母A-Z,不能在多。
如果自己手動刪除了其中一項,那麼對應也要刪除MRUList裏的編號,否則別想能打開PB,親測
基於PB9.0的特性,只有在軟件正常關閉才會正確保存打開記錄,軟件運行後菜單項完全歸程序控制,不是每次打開菜單都讀取註冊表信息。 這下我得吐槽下了,TMD,都沒見過這麼坑的IDE,動不動崩潰,一崩潰打開記錄就丟失,又要重新找(有快速打開,但載入速度感人).............. 那麼,通過註冊表控制就算了,以後再找下有沒有其他方法。
篇幅不夠長,接續.....
對於已經加入源碼控制的項目,打開記錄是放在上面的路徑。 對於沒有加入源碼控制的項目,打開記錄則放在
HKEY_USERS\S-1-5-21-XXXXXXXX\Software\Sybase\PowerBuilder\9.0\Target
試過將MRUList的上級目錄(此處案例的目錄是D:$123123.pbw)整個刪掉,再重新打開PB,嘿嘿,脫離源碼控制。 之前有同事遇到莫名奇妙得丟失了源碼控制,導致無法正常簽出簽入。基於上面的瞭解,可以將正常的
HKEY_USERS\S-1-5-21-XXXXXXXX\Software\Sybase\PowerBuilder\9.0\Workspace\D:$123123.pbw\SourceControl
導出,出現問題的時候就可以導入回去,還可以做一鍵添加源碼控制,保險起見,最好把D:$123123.pbw節點都導出。
裏面是有路徑的喲,不同電腦的話就建個相同路徑試試