2017-04-07 19 views
0

這是我的用例: 我需要開發一個excel VSTO加載項,該插件可以防止用戶訪問excel文件,除非安裝了加載項。該加載項基本認證當前用戶,如果成功,它將授予他們訪問文件的權限。基本上我需要一種方法來保護使用我自己的身份驗證(而不是Microsoft提供的內置密碼保護)的文件,這是爲什麼?因爲我需要能夠撤消對該文件的訪問,並且本地密碼會阻止我進行此操作所以)強制Excel文件與VSTO插件關聯

我知道如何編寫外接,我不知道的是,我如何強制文件與該插件關聯?我嘗試使用自定義屬性,但這是非常可以破解的。基本上,我會有一個自定義屬性,說:「使用這個加載項」,但一個有知識的用戶可以進入高級屬性,只需刪除它。

回答

0

我的建議是你使用COM加載項,因爲它們沒有代碼分配給用戶,並不能輕易砍死。使用.XLA或.XLAM文件的簡單加載項只是受密碼保護的VBA項目,可以被黑客入侵。現在

,爲您的工作簿,我建議你加密和混排的所有數據,並使用你的COM加載解密你的數據和使用功能,防止保存工作簿未加密。您只需重寫Workbook_OnSave方法即可對保存進行加密。同時禁用單元格值的複製。

對於這部分,我不知道這是否可行,但是您需要覆蓋用戶對VBA編輯器的訪問權限,以便它們無法繞過您的加載項保護並禁用對選項菜單的訪問禁用加載項。這可以通過覆蓋Excels快捷鍵和隱藏菜單欄來實現。

再次,對於最後一部分,我不知道是否真的有可能限制用戶訪問VBA編輯器。我認爲這與通過重寫ALT + F11快捷鍵限制對Add-in控件的訪問非常相似,並且只是隱藏了開發者標籤。

那麼這是我的兩美分,祝你好運!

+0

感謝您的快速回復。我的主要問題是,我如何使用我的加載項來製作特定文件,或者知道它需要它?我的加載項如何知道哪些文件需要它?你懂我的意思嗎? –

+0

好吧,您可以重寫Workbooks.open方法,以檢查加載項是否處於活動狀態。如果沒有 - 不要解密數據並提示用戶使用加載項。如果存在加載項,則繼續進行身份驗證 –

+0

事實證明,如果沒有密碼,則無法加密文件。我不想設置密碼,因爲我不想讓用戶被提示,並且我不能以編程方式通過它(除非我做一些hacky SendKeys命令,它的工作時間是一半)。相反,我編寫了一個與自定義擴展相關的程序,它代表了一個加密的excel文件。當用戶打開它時,它會被解密回Excel文件,然後重寫WorkbookSave和Open方法,並在用戶完成時將其加密。它不是防彈的,但它現在會做... –