我有了1個引用的程序集(TEST.EXE,Test.dll的)到應用數字簽名有道已經引用的程序
我想是時候test.exe
運行時,它應顯示發佈者的名稱爲應用程序「TestCompany」。
要做到這一點,我對它進行了數字簽名,並且按照我的要求進行了操作。如果我更改test.exe
的一個字節,則發佈者名稱爲「未知」。這很好。
但是,如果我更改test.dll
,應用程序將以任何狀況運行,並將發佈者名稱顯示爲「TestCompany」。這對我不好。
所以我在test.dll
上加上了強名,並在app.config中加入了<bypassTrustedAppStrongNames enabled="false" />
。
再次,沒有區別。所以我再次搜索,發現bypassTrustedAppStrongNames
只檢查程序集是否具有強名稱。不是驗證。這對我來說並不好。
我真正想要的是保護用戶,而不是我的應用程序。如果用戶運行我的應用程序,並且它從我這裏說,它必須來自我作爲每個單字節。如果應用程序被更改,即使是單個字節,它也必須通知用戶,而不是從我那裏通知。這是什麼數字標誌假設與強名稱一起做,但他們似乎都不是那麼好。或者我錯過了什麼?
我能想到的最後一種可能的方法是手動檢查程序集的強名稱。
PS:目標的.NET Framework 2.0
我想也許你必須用-vf參數運行Sn.exe(強名稱工具),然後測試返回代碼。或者甚至可能捕獲並解析輸出。 – RenniePet 2014-12-07 10:41:13
http://msdn.microsoft.com/en-us/library/cc713694%28v=vs.110%29.aspx有一個註冊表設置可以做你想做的事情。 – RenniePet 2014-12-07 10:46:19
@RenniePet:是的,我可以使用'StrongNameSignatureVerificationEx'進行手動檢查,但我期待着按照它的意圖檢查自己。他們禁用了框架3.5的驗證,以加速應用程序的啓動。但即使停用也是如此。 – xmen 2014-12-07 11:10:17