❶ 為什麼修改了軟體的dll文件程序運行的時候就出錯了
不好說,可能性很多。可能是這個 DLL 加了殼,或者做了HEAD詭計。導致DLL修改資源後不能正常使用,也可能是調用DLL的EXE模塊對DLL做了校驗。
運行出錯的提示是什麼??
❷ 無法更新文件問題怎麼解決
要解決此問題,請重命名 Edb.log 文件,然後嘗試再次安裝此程序。要重命名 Edb.log 文件,請按照下列步驟操作: 1. 單擊「開始」,單擊「運行」,在「打開」框中鍵入 cmd,然後單擊「確定」。
2. 在命令提示符處,鍵入以下命令並按 Enter:
ren %systemroot%\system32\catroot2\Edb.log *.tst 方法 2:將「加密服務」設置為自動
將「加密服務」設置為「自動」,然後嘗試再次安裝此程序。要將「加密服務」設置為「自動」,請按照下列步驟操作: 1. 啟動「控制面板」中的「管理工具」實用工具。
2. 雙擊「服務」。
3. 右鍵單擊「加密服務」,然後單擊「屬性」。
4. 對於「啟動類型」,請單擊「自動」,然後單擊「啟動」。
注意:Windows 2000 未在「服務」管理實用工具中列出「加密服務」。 方法 3:重命名 Catroot2 文件夾
重命名 Catroot2 文件夾(僅適用於 Windows XP 和 Windows Server 2003),然後嘗試再次安裝此程序。注意:如果操作系統為 Windows 2000,則跳過此方法。要重命名 Catroot2 文件夾,請按照下列步驟操作: 1. 單擊「開始」,單擊「運行」,在「打開」框中鍵入 cmd,然後單擊「確定」。
2. 在命令提示符處鍵入以下命令,並在鍵入每行後按 Enter:
net stop cryptsvc
ren %systemroot%\System32\Catroot2 oldcatroot2
net start cryptsvc
exit
重要說明:不要重命名 Catroot 文件夾。Catroot2 文件夾是由 Windows 自動重新創建的,但 Catroot 文件夾在重命名後不會重新創建。 方法 4:重新注冊與「加密服務」關聯的 DLL 文件
要注冊與「加密服務」關聯的 .dll 文件,請按照下列步驟操作: 1. 單擊「開始」,單擊「運行」,在「打開」框中鍵入 cmd,然後單擊「確定」。
2. 在命令提示符下,鍵入以下命令,並在鍵入每行命令後按 Enter:
regsvr32 /u softpub.dll
regsvr32 /u wintrust.dll
regsvr32 /u initpki.dll
regsvr32 /u dssenh.dll
regsvr32 /u rsaenh.dll
regsvr32 /u gpkcsp.dll
regsvr32 /u sccbase.dll
regsvr32 /u slbcsp.dll
regsvr32 /u mssip32.dll
regsvr32 /u cryptdlg.dll
exit
注意:得到提示時單擊「確定」。注意:Microsoft Windows 2000 不包含 Sccbase.dll 文件。如果您運行的是某個版本的 Windows 2000,請省略此 Sccbase.dll 文件。
3. 重新啟動計算機。
4. 單擊「開始」,單擊「運行」,在「打開」框中鍵入 cmd,然後單擊「確定」。
5. 在命令提示符下,鍵入以下命令,並在鍵入每行命令後按 Enter:
regsvr32 softpub.dll
regsvr32 wintrust.dll
regsvr32 initpki.dll
regsvr32 dssenh.dll
regsvr32 rsaenh.dll
regsvr32 gpkcsp.dll
regsvr32 sccbase.dll
regsvr32 slbcsp.dll
regsvr32 mssip32.dll
regsvr32 cryptdlg.dll
exit
注意:得到提示時單擊「確定」。注意:Microsoft Windows 2000 不包含 Sccbase.dll 文件。如果您運行的是某個版本的 Windows 2000,請省略此 Sccbase.dll 文件。
方法 5:刪除 %Windir% 及其子文件夾的隱藏屬性
1. 單擊「開始」,單擊「運行」,在「打開」框中鍵入 cmd,然後單擊「確定」。
2. 在命令提示符處鍵入以下命令,並在鍵入每行後按 Enter:
attrib -s -h %windir%
attrib -s -h %windir%\system32
attrib -s -h %windir%\system32\catroot2
exit 回到頂端 方法 6:將非驅動程序簽名策略設置為默認繼續
如果您運行的是某個版本的 Windows 2000,請將「未簽名的非驅動程序安裝操作」組策略設置配置為「默認繼續」。該組策略設置位於組策略 MMC 管理單元中的「計算機配置」、「Windows 設置」、「安全設置」、「本地策略」和「安全選項」下。如果您運行的是 Windows XP 或 更高版本的 Windows,則系統將不再支持此組策略設置。在這種情況下,請按照下列步驟操作以解決此問題: 1. 單擊「開始」,單擊「運行」,鍵入 regedit,然後單擊「確定」。
2. 在注冊表中找到並單擊下面的項:
HKEY_LOCAL_MACHINE\Software\Microsoft\Non-Driver Signing
3. 右鍵單擊「Policy」二進制值,然後單擊「修改」。
4. 此數值數據將顯示為下面的格式:
0000 02
按 Delete 刪除當前值(在本例中為 02),然後鍵入 0(當前值現在將顯示為 00)。
5. 單擊「確定」,然後退出注冊表編輯器。
❸ 反編譯修改dll文件後重新.net重新生成dll文件
反編譯之前要先檢查文件是否被混淆加密了,如果沒有那就要恭喜你了。
使用reflector反編譯dll源文件一定要安裝FileGenerator的插件,安裝好後就可以然後直接生成vs2005的工程了,然後用vs2005打開工程,修改反編譯代碼中異常的代碼,加入編譯環境所需的dll動態庫,編譯即可。
---------------------------------------------------------------------------------------------------------------
舉例來說:
1、比如inforeader.get_item("name").ToString(),其實應該是inforeader.["name"].ToString(),沒辦法,手工改吧
2、還有,他還會報方法參數問題的錯誤,比如aa.Compare("helloworld","d",5),在5的未知顯示參數錯誤,原來是本身這個位置的參數是一個枚舉類型,反編譯不知什麼原因變成了第五個,於是改成枚舉StringComparison.OrdinalIgnoreCase
3、。。。。。。
------------------------------
如有需要可與本人聯系。
❹ 為什麼將dll的名字改了以後dll就不能用了
本來應該是沒什麼問題的,但下載下來後我將dll的名字保存的與原dll的名字不一樣,所以在使用時調用dll中的方法時就一直出錯。當時百思不得其解,一直以為是dll中的代碼寫的有問題。仔細檢查後發現dll一點問題都沒有。當時查看了dll的屬性後發現其原名字與現在的名字不一樣,於是試著將其重命名後調用一切正常。然後在網上查了以後發現問題的所在。"原來那個dll名不是簡單的一個名字,不是想文件與文件夾名一樣,而是在dll類裡面有用到的,不能隨便改。如果想改,那麼你就從新編譯成dll前改成你想要的名字,然後在編譯"網上原話,具體可以參看原網頁:
❺ 如何把dll文件反編譯修改之後的文件編譯成dll
你在你的solution中新建一個工程,然後把a.cs,b.cs,c.cs添加到這個工程裡面(我建議你新建類,然後把類的代碼過去,這樣即使命名空間不同也不會造成混亂)
然後再你引用的工程里addreference->project->你新建的這個工程,就可以調用了.
這樣如果你需要修改的話直接在ide里修改,可以實時看到效果
❻ C# dll編譯問題
這個只有三樓說對了!
事實上我們在引用時自己開發的dll時存在兩種引用方式:
引用時選擇的是項目(dll項目也在項目資源管理器中),這里引用最直接,原則上是使用這種引用的方式。
引用時選擇的是文件(直接引用了文件夾中指定的dll),這里引用其實一般用於不一個項目資源管理器時的使用(因為這個dll的源碼你無法拿到,或者為了不允許你更改,要求你引用文件而不是項目)
當然,如果條件允許,引用前可以在資源管理器先添加已存在的項目(當然是你要引用的那個項目),然後按第一種引用方式引用!
兩種引用方式有一定的區別:
引用項目其實是在項目資源管理器中形成一個依賴關系,這個可以在項目管理管理器上右面查看項目依賴關系(不是在項目上右擊,不是在項目上右擊,不是在項目上右擊,重要的事說三遍,因為很多人連項目與項目資源管理器都沒分清!)正是因為有這個項目依賴的關系,所以IDE在編譯時會按照依賴關系進行生成——也就是說被引用項目要比引用項目先生成!當然了,我見過一些「牛X"程序員把自己項目中亂寫一通,最後形成了一個環狀引用,還告訴我說找到了vs的bug,項目生成失敗,而且無解!汗了~~自己原理不清楚,你以為臭蟲那麼好捉?
之所以這么說,就是因為其實你每次生成時,由於依賴關系的原因,引用的永遠是最後的dll,不管是有人解釋為「所有項目重新生成了,所以能引用到最新的」,還是解釋為「直接引用了被引用項目bin中的文件」,還是解釋為「通知了依賴項項目更新引用文件」等等不影響你使用的,而且在被引用生成之後,其他的引用都是新的。
第二種其實是引用了一個副本文件!不管你在不在同一項目資源,只要是直接引用文件的這種,都實都是將文件到了object文件夾中,而這個文件夾的文件在生成時會生成到bin文件夾中!也有人理解為到了bin文件夾中,但是他們搞不清楚——類似於以上文件明明引用源中的dll已經更新,而bin中的怎麼還是舊文件呢?其實文件引用方式是引用到項目中一個中間文件中了,這個文件並沒有在vs上顯示(文件組中存在,有些還是隱藏的),眾所周知的是bin只有在編譯的時候才會生成,所以很多人會以為源dll文件也是此時生成的,事實上根本上不是!而是你在引用時已經將文件到了隱藏的目錄中!在生成時再將其到bin中!所以即引源文件夾的內容已經改變,這個文件也不會再發生錯誤了!如果這樣理解了,那麼樓主的問題就已經知道原因了!
如果是項目引用,不用管的,引用的永遠是最新的dll!
如果是文件引用,在dll更新時,應該在項目中引用文件夾中找到文件,然後右擊「刷新引用」即可!這個方式相當於再次從將源dll 到中間object目錄中。當然,開發過程中使用的就是新的dll了!另一種方式更絕,就是刪除引用文件,重新引用(這絕對可行,但怎麼也不那麼優雅,人家原因的dll位置又沒換)!
如果讓我根據樓主的描述,我猜你使用的也是文件引用方式!那麼知道文件引用方式,怎麼解決就不成問題了!
你一定奇怪,為什麼還要有文件引用方式?我想引用哪個直接把那個項目添加到我的項目資源管理器中不就行了?就算兩台機器上,一個dll也是,把整個的項目拷貝過來不也行嗎(大多時候我們使用TFS時,可以直接將項目拉回來的)?為什麼會存在這樣文件引用呢?它的作用就為了解決我們拿不到源碼無法添加到項目中而出現的引用方式嗎?答案是肯定的,但只是一部分原因!我來告訴你另一部分的原因!
Fake!Fake!Fake! 如果你懂這個單詞,那麼一定知道我的意思,如果不懂我來告訴你吧,這個單詞就是「假的」!如果dll開發是一個任務(develop task), 而引用該dll的應用軟體或中間件也是一個任務(delevop task),在正常的開發關繫上來說,dll開發任務是應用開發的前驅,也就是正常的需要dll開發完成後才進行應用軟體的開發(很多人的模式都是這樣的),但現在情況是,dll開發需要5天,而應用開發也需要5天,產品卻要7天內交付!那麼是說兩個任務要同時進行develop! 怎麼辦?怎麼辦?應用開發程序員卻說你沒dll讓我怎麼引用——聽起來很有道理,不少管理者向dll開發team壓壓力,你們在兩天內加班完成,我給你們放5天假!事實上兩天內加班完成的dll其實質量可想而知!為什麼不Fake呢!
Fake的意思就是應用開發人員引用一個「假的」dll! 標記為Fake的引用文件非常好玩——你可以在開發中試一下!它只需要在成品是組合一下就可以了(因為引用文件會使用其文件的版本/哈希值/空間等相關校驗,而這個即更是更新後的文件也存在有些值不一樣——如publicToken值,而引用Fake則就是解決了這個問題)!
所以說文件引用的方式同時還是打破任務前驅方式的一種行為,有利於扁開化安排開發時間!所以文件引用也存在其實必要的因素!
無源碼時的引用(只提供了dll沒提供源碼),比如某些SDK等,一般用於穩定的成熟的,基本上更新不大的dll文件使用。
分支版本控制(由於開發過程中存在諸多的分支版本)應用程序員無法分清楚或不需分清楚分支版本時,引用源碼則會對應用開發造成一定的混淆,當然在dll開發立場上他們當然知道該用哪個版本的源碼,對於應用開發的team,沒有必要增加他們學習時間。各版本的區別他們並不知道細節。
Fake引用!並行開發成為可能性(雖然可以引用另一個團隊的dll源碼,如果你願意每次生成時都更新他們的源碼——他們有可能同時在改動,還要以無比的關愛來忍受他們的千奇百怪的bug的話,我同意,當然還得忍受這種原因導致你自己的進度緩慢)。
也正是因為如此,所以文件引用可能會出現的現象要知道怎麼處理。
❼ 如何更新dll文件庫
用網路電腦專家dll專修工具修復系統丟失的dll文件。
1、網路搜索輸入:dll專修工具,在打開的網頁目錄中選擇:dll修復工具
下載_網路電腦專家,點擊:打開工具;
可參考:_網路經驗
《xxxxxx.dll文件丟失的解決方法》
http://jingyan..com/article/148a1921ba6fc14d71c3b1ab.html
❽ 重裝SDDynDll.dll後為什麼進游戲後還是依然說SDDynDll.dll未更新..
重新安裝系統
❾ 依賴的dll更新後什麼情況下需要重新編譯主程序
有的網站後台代碼既有aspx又有CS文件,而且更改CS文件後不需要重新編譯,網站直接就改變了,是有好多這樣的網站。 主要的原因是:網站編譯,可以是整站編譯,也可以不編譯的。把所有源代碼,放在相應目錄,也是可以正常運行的,
❿ "修改"DLL文件後無法運行
-6E和6E你沒感覺缺了什麼 ?再說了動態鏈接庫文件你隨便就給改了,你以為這是注冊表啊,動了還能恢復一下,如果你能記住你修改的是哪個動態鏈接庫文件,去DLL資源站上重新下載個在DOS下復制進去吧,否則你提搞不了的,只能重裝。