1. 程式人生 > >判斷是否已經安裝vc2008執行時庫

判斷是否已經安裝vc2008執行時庫

Visual C++ Redistributable(簡稱VC執行庫),現在的系統VC2005是必須安裝,QQ、遊戲、網路應用都離不開VC2005的支援,(也就是說VC不安裝這些都不能用),VC2008執行庫呢是可選的,現在或將來新遊戲都依賴VC2008
程式碼呢沒什麼精闢之處,甚至不屑一顧的程式碼,那我又為何寫這樣的垃圾程式碼呢?
如果你經常安裝系統軟體或遊戲哪怕一線主流遊戲的安裝程式,在安裝時都不管你是否安裝了VC,它都要安裝一次,更可氣的明明我安裝的是高版本它卻拿低版本進行覆蓋安裝,眾所周知任何軟體低版本容易被病毒木馬攻擊,特別是VC執行庫。所以我在想難道判斷是否安裝了VC執行庫就那麼難嗎?於是研究一番寫了這個這個程式碼,希望對這些應用有關的程式設計師有幫助。

vc2008

@echo off
set "HKLMU=HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall"
::::: 判斷系統是否已經安裝了 Visual C++ 2008 (包括所有版本)       bbs.bathome.net By:FastSLZ
::::: 程式碼能實現判斷X86、X64、IA64各版本的Visual C++ 2008,正確率99%除非微軟釋出新版本Visual C++ 2008
::::: 有就跳過安裝Visual C++ 2008,沒有則先安裝。
reg query %HKLMU%/{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 Redistributable X86
reg query %HKLMU%/{9A25302D-30C0-39D9-BD6F-21E6EC160475}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable X86
reg query %HKLMU%/{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update X86
reg query %HKLMU%/{350AA351-21FA-3270-8B7A-835434E766AD}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 Redistributable X64
reg query %HKLMU%/{8220EEFE-38CD-377E-8595-13398D740ACE}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable X64
reg query %HKLMU%/{4B6C7001-C7D6-3710-913E-5BC23FCE91E6}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update X64
reg query %HKLMU%/{2B547B43-DB50-3139-9EBE-37D419E0F5FA}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 Redistributable IA64
reg query %HKLMU%/{5827ECE1-AEB0-328E-B813-6FC68622C1F9}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable IA64
reg query %HKLMU%/{977AD349-C2A8-39DD-9273-285C08987C7B}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update IA64
if defined VC2008 (echo %VC2008% 已安裝!&ping -n 3 127.1>nul) else (goto 2008Install)
:::::這裡你要做的事
Run Vcredist_x86.exe
goto:eof
:2008Install
:::::這裡還可以精確判斷何種版本的Visual C++ 2008,該不該更新到最新的。
:::::最新的Visual C++ 2008是Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update ***
:::::各版本下載地址

http://www.microsoft.com/downloads/details.aspx?FamilyID=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&DisplayLang=zh-cn
echo 正在安裝 Microsoft Visual C++ 2008 Redistributable
vcredist_2008_x86.exe /q
goto:eof

把上面這段建立一個bat檔案。執行即可。

vcredist_2008_x86.exe與這個bat檔案放在同一目錄。

原文的文字框中的字元有錯誤,特此修正。

相關推薦

判斷是否已經安裝vc2008執行

Visual C++ Redistributable(簡稱VC執行庫),現在的系統VC2005是必須安裝,QQ、遊戲、網路應用都離不開VC2005的支援,(也就是說VC不安裝這些都不能用),VC2008執行庫呢是可選的,現在或將來新遊戲都依賴VC2008程式碼呢沒什麼精闢之處

[轉]C和C++執行

轉自csdn原文:https://blog.csdn.net/ithzhang/article/details/20160009 圖片請去原文檢視 在使用VC構建專案時,經常會遇到下面的連結錯誤:   初學者面對這些錯誤常常不知所錯:libcmt.lib是什麼東西?msvcrtd.dll又是幹嗎用的?在

什麼是c執行

nafxcw.lib 和 libcmt.lib衝突問題。 解決辦法: 屬性設定裡讓程式先找到nafxcw.lib. 解決辦法參考:https://www.cnblogs.com/suiyingjie/archive/2012/10/29/2745031.html 從vs2008 工程

執行 MT\MD的區分和優劣

  VC專案屬性→配置屬性→C/C++→程式碼生成→執行時庫 可以採用的方式有:多執行緒(/MT)、多執行緒除錯(/MTd)、多執行緒DLL(/MD)、多執行緒除錯DLL(/MDd)、單執行緒(/ML)、單執行緒除錯(/MLd)。 Reusable Library&nb

Qt在pro中設定執行MT、MTd、MD、MDd,只適合VS版本的Qt

轉自:http://blog.csdn.net/caoshangpa/article/details/51416077 一.在pro中設定執行時庫 最近在用Qt5.6.0(VS2013版本)呼叫一份用Visual Studio 2013編譯的Debug版本靜態庫時出現如下錯誤:

VC 執行 /MD、/MDd 和 /MT、/MTd

有段時間在寫cuda程式是出現過 error LNK2005: _exit 已經在 MSVCRTD.lib(MSVCR71D.dll) 中定義 等類似錯誤 原因應該是在vs2010 工程屬性中 c/c++的程式碼生成(code generation)中的設定與cuda

GCC編譯、連結、執行查詢順序(最真實可信)

參考了不少資料,其中最靠譜是這個:http://www.mingw.org/wiki/librarypathhowto和http://www.kaizou.org/2015/01/linux-libraries/經過線上實際驗證,GCC編譯、連結、執行時庫查詢順序如下,這個順

終於理解了什麼是c/c++執行,以及libcmt msvcrt等內容

在各個版本的編譯器中,我們可以通過配置選項來設定程式使用的C和C++執行時庫的型別。如下圖(其他版本編譯器大同小異):MT選項:連結LIB版的C和C++執行庫。在連結時就會在將C和C++執行時庫整合到程式中成為程式中的程式碼,程式體積會變大。 MTd選項:LIB的除錯版。 M

執行路徑指定

這裡補充一點,動態庫(.so)是直接可以呼叫的,並不會被編譯程序序。只讀檔案系統,將其中一個目錄通過nfs方式mount到其它地方(比如PC機),將動態庫放於該目錄下,並將該目錄指定為庫的搜尋路徑(export LD_LIBRARY_PATH=),程式執行時會呼

VS的執行(Runtime lIB)

在開發window程式是經常會遇到編譯好好的程式拿到另一臺機器上面無法執行的情況,這一般是由於另一臺機器上面沒有安裝響應的執行時庫導致的,那麼這個與編譯選項MT、MTd、MD、MDd有什麼關係呢?這是msdn上面的解釋: MT:mutithread,多執行緒庫

C執行(C Run-time Library)詳解

一、什麼是C執行時庫1)C執行時庫就是 C run-time library,是 C 而非 C++ 語言世界的概念:取這個名字就是因為你的 C 程式執行時需要這些庫中的函式.2)C 語言是所謂的“小核心”語言,就其語言本身來說很小(不多的關鍵字,程式流程控制,資料型別等);所以,C 語言核心開發出來之後,De

解決PyCharm無法使用已經安裝好的第三方

在使用PyCharm時遇到系統已經安裝好的第三方庫無法匯入的情況,使用jupyter notebook 或者在終端中使用互動式時都可以使用。 解決方案 1.通過可以正常匯入已經安裝好的第三方模組的開發工具 執行以下程式碼,檢視當前環境使用的直譯器的位置

CRT(C Runtime Library)—— C/C++執行

C runtime library(part of the C standard library) 任何一個 C 程式,它的背後都有一套龐大的程式碼來進行支撐,使得該程式得以執行在更高級別上,而不必擔心同計算機底層操作的細節,這套程式碼至少包括:

執行MT、MTd、MD、MDd的研究

在開發window程式是經常會遇到編譯好好的程式拿到另一臺機器上面無法執行的情況,這一般是由於另一臺機器上面沒有安裝響應的執行時庫導致的,那麼這個與編譯選項MT、MTd、MD、MDd有什麼關係呢?這是msdn上面的解釋: MT:mutithread,多執行緒庫,編譯器會

【VS開發】MFC執行與debug、release版本之間的配置關係

參考內容:  前段時間從網上下來一個有意思的程式碼,用VS2010開啟時需要將工程轉換為2010的工程,轉化後卻出現了編譯不通過的問題,類似這樣的錯誤:c:\program files\microsoft visual studio 10.0\vc\atlmfc\inc

VS執行下載地址

Microsoft Visual C++ 2008 SP1 Redistributable Package (x86) 地址:http://www.microsoft.com/en-us/download/details.aspx?id=5582 Microsoft Vi

C/C++執行到底在Windows中起什麼作用(猜想)

以下是作者的一些猜想: 1. 我們在用VC程式設計時,會在執行我們的main函式前,系統先通過Kernel32呼叫一些函式,執行一些C的初始化準備工作,我們一般叫C執行時庫的初始化。那麼這些初始化的作用是什麼?是否是必要的?不知道大家有沒有思考過這個問題。 以下是我對這

vs2015部署---下一代VC執行系統:the Universal CRT

前言 其實the Universal CRT(通用C執行時庫)已經不能算是“下一代”,因為它已經在前兩年伴隨著Visual Studio 2015和Windows10釋出。但是由於之前使用VS2015開發的應用還較少,關注的人也少,相關的文章更少。所以筆者想幹脆用一篇文章,深入淺出的介紹一下Universa

FBX在Windows下執行的選擇

  有時候有寫些造福後人的文章,但往往都是說不透徹,我自己學得都不透徹.能造福一些算一些吧,以後看完了再補上.最近弄的用FBX SDK操作FBX動作檔案的東西,弄了這是第五個星期了,總算快弄完了.簡單說下庫的選擇.   如官方的說明所言,可以選擇3種使用FBX SDK的方式

C執行Visual C++ C RunTime Lib

CRT 全稱:Visual C++ C RunTime Lib 就是C執行時庫。 注: 以下內容部分引自CSDN中相關討論的帖子,並結合自己的理解整理而成。僅供參考。 1)執行時庫就是 C run-time library,是 C 而非 C++ 語言世界的概念:取這個