亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

在Win7中安裝程序集到GAC

系統 2119 0
原文: 在Win7中安裝程序集到GAC

??? ? 微軟為提高系統安全,自Vista推出后,在Windows系統中加入了一個新的東東——UAC(User Account Control),這樣一個新的技術使得許多操作都受到了約束,尤其是對系統設置、文件的修改,Win7作為一個衍生品,也受到了UAC的保護。

????? 在.NET項目開發中,針對一些類庫項目或用戶控件項目,當程序開發完成后,有時需要將開發的程序集,安裝部署到GAC( Global Assembly Cache )中,以便其他的程序也可以調用。

??????通常,將程序集安裝到GAC有兩種方法:

????? 1、將程序集(dll文件)手動拖至?C:/Windows/assembly 文件夾中。

??????2、利用全局程序集緩存工具Gacutil進行安裝。

?

??????在Win7中第一種方法無法使用,會出現“訪問被拒絕的錯誤”,只能使用第二種方法。

????? 以管理員身份運行“Visual Studio 2008 命令提示”,然后在命令行中輸入如下命令:

??????1、安裝程序集:

?????? gacutil -i Demo.dll

????? 2、卸載程序集:

????? gacutil -u Demo

?

????? 在執行程序集的安裝之前,應該給項目加強名稱,具體如下:

????? 1、以管理員身份運行“Visual Studio 2008 命令提示”,然后在命令行中輸入如下命令:

????? sn -k myKey.snk (擴展名可以任意)

????? 2、將密鑰與項目程序集關聯。在VS開發環境中:項目屬性-->簽名-->為程序集簽名-->選擇強名稱密鑰文件

????? 3、重新生成程序集。

?

附:

(1)全局程序集緩存工具 (Gacutil.exe)說明

              全局程序集緩存工具使您可以查看和操作全局程序集緩存和下載緩存的內容。
            
              gacutil [options] [assemblyName | assemblyPath | assemblyListFile]

?
            
參數 說明

assemblyName

程序集的名稱。可以提供部分指定的程序集名稱(如 myAssembly )或完全指定的程序集名稱(如 myAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5 )。

assemblyPath

包含程序集清單的文件的名稱。

assemblyListFile

列出要安裝或卸載的程序集的 ANSI 文本文件的路徑。若要使用文本文件安裝程序集,請在文件中的單獨一行上分別指定每個程序集的路徑。全局程序集緩存工具解釋相對于 assemblyListFile 的位置的相對路徑。若要使用文本文件卸載程序集,請在文件中的單獨一行上分別為每個程序集指定完全限定的程序集名稱。請參見本主題后面的 assemblyListFile 內容示例。

選項 說明

/cdl

刪除下載緩存的內容。

/f

/i /il 選項一起指定此選項將強制重新安裝程序集。如果全局程序集緩存中已經存在同名的程序集,全局程序集緩存工具將改寫該程序集。

/h [ elp ]

顯示該工具的命令語法和選項。

/i ? assemblyPath

將程序集安裝到全局程序集緩存中。

/if assemblyPath

將程序集安裝到全局程序集緩存中。如果全局程序集緩存中已經存在同名的程序集,全局程序集緩存工具將改寫該程序集。

指定此選項相當于同時指定 /i /f 選項。

/il ? assemblyListFile

assemblyListFile 中指定的一個或多個程序集安裝到全局程序集緩存中。

/ir assemblyPath

scheme

id

description

將程序集安裝到全局程序集緩存中,并添加引用以對程序集進行計數。使用此選項時必須指定 assemblyPath scheme id description 參數。有關可為這些參數指定的有效值的說明,請參見 /r 選項。

指定此選項相當于同時指定 /i /r 選項。

/l [ assemblyName ]

列出全局程序集緩存的內容。如果指定 assemblyName 參數,則全局程序集緩存工具只列出與該名稱匹配的程序集。

/ldl

列出下載文件緩存的內容。

/lr [ assemblyName ]

列出所有程序集及其相應的引用數。如果指定 assemblyName 參數,則該工具只列出與該名稱匹配的程序集及其相應的引用數。

/nologo

取消顯示 Microsoft 啟動標題。

/r [ assemblyName | assemblyPath ]

scheme

id

description

指定對要安裝或卸載的一個或多個程序集的跟蹤引用。與 /i /il /u /ul 選項一起指定此選項。

若要安裝程序集,請在使用此選項的同時指定 assemblyPath scheme id description 參數。若要卸載程序集,請指定 assemblyName scheme id description 參數。

若要移除對程序集的引用,必須指定在安裝程序集時使用 /i /r (或 /ir )選項指定的 scheme id description 參數。如果卸載程序集,則全局程序集緩存工具還從全局程序集緩存中移除該程序集,條件是它是最后一個要移除的引用,并且 Windows Installer 沒有對該程序集的未決引用。

scheme 參數指定安裝方案的類型。可以指定以下值之一:

  • UNINSTALL_KEY:如果安裝程序將應用程序添加到 Microsoft Windows 中的“添加/刪除程序”,則指定該值。應用程序通過將注冊表項添加到 HKLM/Software/Microsoft/Windows/CurrentVersion 中而將自己添加到“添加/刪除程序”中。

  • FILEPATH:如果安裝程序沒有將應用程序添加到“添加/刪除程序”中,則指定該值。

  • OPAQUE:如果提供的注冊表項或文件路徑不適于您的安裝方案,則指定該值。該值允許您為 id 參數指定自定義信息。

id 參數指定的值取決于為 scheme 參數指定的值:

  • 如果為 scheme 參數指定 UNINSTALL_KEY,請在 HKLM/Software/Microsoft/Windows/CurrentVersion 注冊表項中指定應用程序集的名稱。例如,如果注冊表項是 HKLM/Software/Microsoft/Windows/CurrentVersion/MyApp,請指定 MyApp 作為 id 參數。

  • 如果為 scheme 參數指定 FILEPATH,請將安裝程序集的可執行文件的完整路徑指定為 id 參數。

  • 如果為 scheme 參數指定 OPAQUE,則可以將任何一段數據作為 id 參數提供。所指定的數據必須用引號 ("") 括起來。

description 參數允許您指定關于要安裝的應用程序的描述性文本。當枚舉引用時,顯示此信息。

/silent

取消所有輸出的顯示。

/u assemblyName

從全局程序集緩存中卸載程序集。

/uf assemblyName

通過移除對程序集的所有引用來強制卸載指定的程序集。

指定此選項相當于同時指定 /u /f 選項。

注意

不能使用此選項移除使用 Microsoft Windows Installer 所安裝的程序集。如果嘗試此操作,則全局程序集緩存工具顯示錯誤信息。

/ul ? assemblyListFile

從全局程序集緩存中卸載 assemblyListFile 中指定的一個或多個程序集。

/u [ ngen ] assemblyName

從全局程序集緩存中卸載指定的程序集。如果指定的程序集存在現有引用數,則全局程序集緩存工具顯示引用數,而且不從全局程序集緩存中移除該程序集。

注意

在 .NET Framework 2.0 版中,不支持 /ungen 。而是使用 本機映像生成器 (Ngen.exe) uninstall 命令。

在 .NET Framework 1.0 和 1.1 版中,指定 /ungen 將使 Gacutil.exe 從本機映像緩存中移除該程序集。此緩存存儲了使用 本機映像生成器 (Ngen.exe) 創建的程序集的本機映像。

/ur assemblyName

scheme

id

description

從全局程序集緩存中卸載對指定程序集的引用。若要移除對程序集的引用,必須指定在安裝程序集時使用 /i /r (或 /ir )選項指定的 scheme id description 參數。有關可為這些參數指定的有效值的說明,請參見 /r 選項。

指定此選項相當于同時指定 /u /r 選項。

/?

顯示該工具的命令語法和選項。

(2)Sn.exe(強名稱工具)說明

????? 強名稱工具 (Sn.exe) 有助于使用 強名稱 對程序集進行簽名。 Sn.exe 提供用于密鑰管理、簽名生成和簽名驗證的選項。

強名稱工具自動與 Visual Studio 一起安裝。 要啟動工具,請使用 Visual Studio 命令提示符 在命令提示處,鍵入下列命令:

              sn [-quiet][option [parameter(s)]]


            
參數
?

選項

說明

-c [ csp ]

將默認加密服務提供程序 (CSP) 設置為用于強名稱簽名。 此設置應用于整臺計算機。 如果不指定 CSP 名稱,則 Sn.exe 將清除當前設置。

-d container

從強名稱 CSP 中刪除指定的密鑰容器。

-D assembly1 assembly2

驗證兩個程序集是否只是簽名不同。 這經常用作使用不同的密鑰對重新為程序集創建簽名后的檢查。

-e assembly outfile

assembly 中提取公鑰并將其存儲在 outfile 中。

-h

顯示該工具的命令語法和選項。

-i infile container

從指定密鑰容器中的 infile 安裝密鑰對。 密鑰容器位于強名稱 CSP 中。

-k ?[ keysize ] outfile

生成一個指定大小的新 RSACryptoServiceProvider 密鑰并將其寫入指定的文件。 公鑰和私鑰都寫入該文件。

如果不指定密鑰大小,并且已安裝了 Microsoft Enhanced Cryptographic Provider,則默認情況下生成 1,024 位的密鑰;否則,生成 512 位的密鑰。

如果安裝了 Microsoft Enhanced Cryptographic Provider,則 keysize 參數支持 384 位至 16,384 位(增量為 8 位)的密鑰長度。 如果安裝了 Microsoft Base Cryptographic Provider,則支持 384 位至 512 位(增量為 8 位)的密鑰長度。

-m [ y | n ]

指定密鑰容器是特定于計算機的還是特定于用戶的。 如果指定 y ,則密鑰容器是特定于計算機的。 如果指定 n ,則密鑰容器是特定于用戶的。

如果既沒有指定 y 也沒有指定 n,則此選項顯示當前設置。

-o infile [ outfile ]

infile 中提取公鑰并將其存儲在 .csv 文件中。 公鑰的每一字節都由逗號分隔。 這種格式對于在源代碼中將公鑰的硬編碼引用作為初始化數組很有用。 如果不指定 outfile ,則此選項將輸出放到剪貼板上。

說明
此選項不驗證輸入的是否只是公鑰。 如果 infile 包含帶有私鑰的密鑰對,則會同時提取私鑰。

-p infile outfile

infile 中的密鑰對提取公鑰并將其存儲在 outfile 中。 此公鑰可用于通過 程序集鏈接器 (Al.exe) /delaysign+ /keyfile 選項對程序集進行延遲簽名。 如果對程序集進行延遲簽名,則在編譯時只設置公鑰,并在文件中為以后知道私鑰時添加的簽名保留空間。

-pc 容器 ? outfile

container 中的密鑰對中提取公鑰并將其存儲在 outfile 中。

-Pb [ y | n ]

指定是否強制執行強名稱跳過策略。 如果指定 y ,則在將完全信任程序集加載到完全信任 AppDomain 時,不驗證這些程序集的強名稱。 如果指定 n ,則會驗證強名稱的正確性,但是不會針對特定強名稱進行驗證。 StrongNameIdentityPermission 對完全信任程序集不起作用。 您必須自己對強名稱是否匹配進行檢查。

如果既沒有指定 y 也沒有指定 n ,則此選項顯示當前設置。 默認值為 y

說明
在 64 位計算機上,必須同時在 Sn.exe 的 32 位和 64 位實例中設置此參數。

-q [ uiet ]

指定安靜模式;取消顯示成功消息。

-R [ a ]? assembly ? infile

使用 infile 中的密鑰對,重新簽名先前已簽名的程序集或延遲簽名的程序集。

如果使用 -Ra ,則重新計算程序集中所有文件的哈希。

-Rc [ a ]? assembly container

使用 container 中的密鑰對,重新簽名先前已簽名的程序集或延遲簽名的程序集。

如果使用 -Rca ,則重新計算程序集中所有文件的哈希。

-Rh ? assembly

重新計算程序集中所有文件的哈希值。

-t [ p ] infile

顯示存儲在 infile 中的公鑰的標記。 infile 的內容必須是以前使用 -p 從密鑰對文件生成的公鑰。 不要使用 -t[p] 選項直接從密鑰對文件提取該標記。

Sn.exe 使用公鑰的哈希函數計算該標記。 為節省空間,公共語言運行時在記錄對具有強名稱的程序集的依賴性時,將公鑰標記存儲在清單中,作為對另一個程序集的引用的一部分。 -tp 選項除顯示標記外還顯示公鑰。

請注意,此選項不驗證程序集簽名,而且不應用于做出信任決策。 此選項僅顯示原始公鑰標記數據。

-T [ p ] assembly

顯示 程序集 的公鑰標記。 assembly 必須是包含程序集清單的文件的名稱。

Sn.exe 使用公鑰的哈希函數計算該標記。 為節省空間,公共語言運行時在記錄對具有強名稱的程序集的依賴性時,將公鑰標記存儲在清單中,作為對另一個程序集的引用的一部分。 -Tp 選項除顯示標記外還顯示公鑰。

請注意,此選項不驗證程序集簽名,而且不應用于做出信任決策。 此選項僅顯示原始公鑰標記數據。

-TS assembly infile

使用 infile 中的密鑰對,對已簽名或部分簽名的 assembly 進行測試簽名。

- TSc assembly container

使用密鑰容器 container 中的密鑰對,對已簽名或部分簽名的 assembly 進行測試簽名。

-v assembly

驗證 assembly 中的強名稱,其中 assembly 是包含程序集清單的文件名。

-vf Assembly — 程序集

驗證 程序集 中的強名稱。 -v 選項不同, -vf 會強制實施驗證,即使已使用 -Vr 選項禁用了驗證。

-Vl

列出此計算機上的強名稱驗證的當前設置。

-Vr assembly [ userlist ] [ infile ]

注冊 assembly 以跳過驗證。 或者,可以指定用逗號分隔的用戶名列表。 如果指定 infile ,則驗證保持啟用,但 infile 中的公鑰將用于驗證操作。 可以 *, strongname 的形式指定程序集,以注冊所有具有指定強名稱的程序集。 Strongname 應指定為十六進制數字的字符串以表示標記形式的公鑰。 參見 -t -T 選項以顯示公鑰標記。

警告
僅在開發期間使用此選項。 將程序集添加到跳過驗證列表會產生安全漏洞。 如果將某程序集添加到跳過驗證列表中,則惡意程序集可以使用該程序集的完全指定程序集名稱來隱藏身份,完全指定程序集名稱由程序集名稱、版本、區域性和公鑰標記組成。 這使惡意程序集也可以跳過驗證。

-Vu Assembly — 程序集

注銷 assembly ,不跳過驗證。 應用于 -Vr 的同一程序集命名規則也應用于 -Vu

-Vx

移除所有驗證跳過項。

-?

顯示該工具的命令語法和選項。

在Win7中安裝程序集到GAC


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久综合中文字幕一区二区三区 | 日本免费一区二区三区毛片 | 久久66热这里只会有精品 | 免费香蕉依人在线视频久 | 快射视频网| 五月在线视频 | 国产精品一区二区久久沈樵 | 欧美精品成人 | 中文字幕一区二区三区在线观看 | 男女一级免费视频 | 欧美一区二区三区在线 | 日日摸夜夜添夜夜添97 | 69视频在线观看福利视频 | 国产成人精品一区二区三在线观看 | 九久久 | 精品一久久香蕉国产线看播放 | 欧美一级在线毛片免费观看 | 天堂毛片| 98色花堂国产精品首页 | 亚洲视频国产视频 | 伊人久久久| 国产欧美日韩网站 | 精品乱码一区二区三区在线 | 国产午夜精品福利视频 | 第一国内永久免费福利视频 | 免费播放欧美毛片欧美a | 成人亚洲网 | 精品国产品欧美日产在线 | 中国精品久久精品三级 | www.黄网站 | 深夜福利视频在线一区 | 欧美乱理伦另类视频 | 四虎在线网站 | 国产美女激情 | 老子影院伦不卡欧美 | 日本黄色小视频在线观看 | 亚洲精品在线播放视频 | www色婷婷| 久久66久这里精品99 | 日韩精品免费一区二区三区 | 伊人成综合 |