如果我們的生活都有底線,就沒有那么多悲劇誕生;
如果我們做產品都有底線,也就沒那么多Bug了!
——塔哥語錄 :)
說說今天的主角——“.ksobak”,它是金山wps安裝、更新后在注冊表中一些小手段的字 段,尤其是當你的環境中已經安裝MSOffice套件時,它的殺傷力是巨大的。
先嘮兩句閑嗑吧,也算是緬懷一下曾經青蔥過的wps!
在塔哥做辦公軟件的那些年,wps是亦敵亦友,那時的辦公軟件在注冊表注入的方面比較謹慎,自己的可以加,別人的不敢碰。
在塔哥整版式文檔的時候,wps是友商,V8(wps2012)改版之后啟動速度有了明顯的提升, 但也是從這會兒開始,wps的氣質變了。
隨著受困于工具類軟件的發展,wps加入了很多新的元素,其中最主要的就是云盤、模版庫這 倆提現手段。它的初衷是為了提供一個付費通道,就公司而言無可厚非。但它把注冊表改的亂七八糟,那就不合適了!
本文目錄:
1、".ksobak"是什么?
2、它都做了什么?
3、怎么避免它帶來的影響?
樓主寫本文時的辦公軟件環境是:
- MSOffice2016
- WPS 2016
會用一些COM技術的基礎,目的是為大家解決安裝wps后對系統帶來的影響,尤其是 MSOffice與wps同時安裝時的一些異常現象。
一、".ksobak"是什么?
“.ksobak”是金山wps修改注冊表時的一個備份鍵值,將原本指向MSOffice的內容改成了wps 套件的內容。同時,將原有內容以“.ksobak”為名稱另存。
如圖所示,在安裝MSOffice2016后,Excel.Application.16將被注冊,等wps安裝后被修改成 了Excel.Application.12 。
注意,此時的Application12并非是Msoffice 2007,而是WPS的產品!問題與災難都是源自于此。
備注,MSOffice開發代號與版本對應關系
二、".ksobak"都做了些什么?
.ksobak只是一個標示,表明wps修改了MSOffice曾經指向的內容。那么,wps到底改了多少呢?
塔哥以.ksobak為關鍵字,搜了一把。在我的環境中,一共有204個。范圍涵蓋了Word、Excel和 Powerpoint三大產品,涉及到應用程序、模板、Addin插件、外掛公式等各類應用。可以說, 影響的范圍還是很大的。
比如說在你用COM接口,以ProgID“Word.Application”想啟動MSWord的時候,實現上啟動的卻是WPS。原因就在于金山wps已經把LocalServer32路徑給改了!
#!/usr/bin/python
# -*- coding: utf-8 -*-
import win32com.client
wpsApp = win32com.client.Dispatch("PowerPoint.Application")
也就是說,在通過COM控制MSOffice的時候,不管是你直接調用,還是間接操作。wps的修改都會讓你得到意想不到的結果。
三、如何避免它帶來的影響?
如何避免wps安裝、升級帶來的影響,也就意味著如何防止WPS篡改MSOffice的鍵值內容!
實現方法有以下幾種:
- 設置注冊表鍵值的操作權限;
- 設置注冊表整體的讀寫權限;
- 分機安裝,物理隔絕;
以上三種都能實現,選擇哪個還看你的應用環境吧。畢竟現在混著用的人并不多,需要調 COM接口的人更是少之又少。
行了,博客寫到這就已經結束了。wps雖然給我添堵,有些技術手段也挺low的,但它不失為 一個不錯的辦公軟件。曾經跑項目的時候,跟WPS的一個前輩聊天,他說的一句話我現在還記得。
wps的困境就是有用戶沒市場,有市場沒用戶!
在個人版中,它有廣泛的用戶群體,但都不是付費用戶。在企業版本,占據了九成以上的市場, 但沒人認真用。你說,它的研發到底該為不花錢的個人用戶,還是花了錢的企業用戶呢?