Эта статья была написана командой Imaginovation . Это компания Raleigh по веб-дизайну и разработке программного обеспечения, которая использует технологии .NET, PHP, HTML5, JavaScript и jQuery.
Как вы, возможно, уже знаете, распространяемые файлы MS VC ++ позволяют запускать программы, которые были разработаны с конкретными версиями Visual Studio. Может возникнуть необходимость проверить клиентскую систему на наличие этих файлов в сценарии, в котором вы развертываете свое приложение и хотите развернуть видеомагнитофон, если в системе пользователя они не установлены, что экономит время и накладные расходы.
Сначала давайте
пройдемся по очень сложному и запутанному соглашению об именах: VCR7 (который мы не будем обсуждать, как обнаруживать в этой статье) соответствует Visual Studio 2003
VCR8 соответствует Visual Studio 2005
VCR9 соответствует Visual Studio 2008
VCR10 соответствует Visual Studio 2010
Затем мы обнаружим наличие этих видеомагнитофонов и добавим их в список строк, используя следующий фрагмент кода:
сначала определен тип перечисления:
public enum INSTALLSTATE
{
INSTALLSTATE_NOTUSED = -7, // component disabled
INSTALLSTATE_BADCONFIG = -6, // configuration data corrupt
INSTALLSTATE_INCOMPLETE = -5, // installation suspended or in progress
INSTALLSTATE_SOURCEABSENT = -4, // run from source, source is unavailable
INSTALLSTATE_MOREDATA = -3, // return buffer overflow
INSTALLSTATE_INVALIDARG = -2, // invalid function argument
INSTALLSTATE_UNKNOWN = -1, // unrecognized product or feature
INSTALLSTATE_BROKEN = 0, // broken
INSTALLSTATE_ADVERTISED = 1, // advertised feature
INSTALLSTATE_REMOVED = 1, // component being removed(action state, not settable)
INSTALLSTATE_ABSENT = 2, // uninstalled (or action state absent but clients remain)
INSTALLSTATE_LOCAL = 3, // installed on local drive
INSTALLSTATE_SOURCE = 4, // run from source, CD or net
INSTALLSTATE_DEFAULT = 5, // use default, local or source
}
/ * Используйте эту функцию, чтобы определить, какой битовый тип видеомагнитофона установлен. Приведенная ниже логика в основном говорит о том, что если вы можете открыть ключ, то он существует (вы можете передать только определенные состояния в зависимости от ваших потребностей. Чаще всего я использую «хорошие состояния» — «Локальный» и «По умолчанию», вам может потребоваться передать все состояния. в целях отладки.
* /
private void CheckVCKey(string _vcKey, string _state)
{
string value64 = string.Empty;
string value32 = string.Empty;
if (Environment.Is64BitOperatingSystem == true)
{
RegistryKey localKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
localKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + _vcKey);
if (localKey != null)
{
value64 = localKey.GetValue("DisplayName").ToString() + " at Registry Key " + _vcKey + " with a state of " + _state;
VCresults.Add(value64);
}
}
RegistryKey localKey32 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
localKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" + _vcKey);
if (localKey32 != null)
{
value32 = localKey32.GetValue("DisplayName").ToString() + " at Registry Key " + _vcKey + " with a state of " + _state; ;
VCresults.Add(value32);
}
public bool IsVCRedistInstalled()
{
string [,] strCodes = new string [,] (это самая важная (и раздражающая) часть этого документа, и этот список строк будет определен ниже фрагмента кода)
INSTALLSTATE state;
for (int i = 0;i < strCodes.Length; i++){
//you can modify this as needed with any of the enumerated types
if (state == INSTALLSTATE.INSTALLSTATE_LOCAL||
state == INSTALLSTATE.INSTALLSTATE_DEFAULT)
{
CheckVCKey(strCodes[i], state.ToString());
}
}
Теперь мы перечислим коды (имейте в виду, что это постоянно меняющийся список, и я постараюсь обновлять его как можно больше):
string[,] strCodes = new string[,]
{
//VC8
//vcredist_x86 - ProductCode
{"{710f4c1c-cc18-4c49-8cbf-51240c89a1a2}"}, //8.0.61001 - distributed in 152
{"{A49F249F-0C91-497F-86DF-B2585E8E76B7}"},
{"{7299052B-02A4-4627-81F2-1818DA5D550D}"},
{"{837B34E3-7C30-493C-8F6A-2B0F04E2912C}"},
//vcredist_x64 - ProductCode
{"{6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}"},
{"{071C9B48-7C32-4621-A0AC-3F809523288F}"},
{"{6CE5BAE9-D3CA-4B99-891A-1DC6C118A5FC}"},
{"{AD8A2FA1-06E7-4B0D-927D-6E54B3D31028}"},
//vcredist_IA64 - ProductCode
{"{C2F60BDA-462A-4A72-8E4D-CA431A56E9EA}"},
{"{03ED71EA-F531-4927-AABD-1C31BCE8E187}"},
{"{0F8FB34E-675E-42ED-850B-29D98C2ECE08}"},
{"{85025851-A784-46D8-950D-05CB3CA43A13}"},
//VC9
//vcredist_x86 - ProductCode
{"{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}"},
{"{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}"},
{"{9BE518E6-ECC6-35A9-88E4-87755C07200F}"},
{"{9A25302D-30C0-39D9-BD6F-21E6EC160475}"},
{"{86CE1746-9EFF-3C9C-8755-81EA8903AC34}"},
{"{CA8A885F-E95B-3FC6-BB91-F4D9377C7686}"},
{"{820B6609-4C97-3A2B-B644-573B06A0F0CC}"},
{"{6AFCA4E1-9B78-3640-8F72-A7BF33448200}"},
{"{F03CB3EF-DC16-35CE-B3C1-C68EA09E5E97}"},
{"{402ED4A1-8F5B-387A-8688-997ABF58B8F2}"},
{"{887868A2-D6DE-3255-AA92-AA0B5A59B874}"},
{"{527BBE2F-1FED-3D8B-91CB-4DB0F838E69E}"},
{"{57660847-B1F7-35BD-9118-F62EB863A598}"},
//vcredist_x64 - ProductCode
{"{350AA351-21FA-3270-8B7A-835434E766AD}"},
{"{4B6C7001-C7D6-3710-913E-5BC23FCE91E6}"},
{"{5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4}"},
{"{8220EEFE-38CD-377E-8595-13398D740ACE}"},
{"{56F27690-F6EA-3356-980A-02BA379506EE}"},
{"{14297226-E0A0-3781-8911-E9D529552663}"},
{"{9B3F0A88-790D-3AD9-9F96-B19CF2746452}"},
{"{D285FC5F-3021-32E9-9C59-24CA325BDC5C}"},
{"{092EE08C-60DE-3FE6-B113-90076EC06D0D}"},
{"{A96702F7-EFC8-3EED-BE46-22C809D4EBE5}"},
{"{92B8FD1F-C1AE-3750-8577-631B0AA85DF5}"},
{"{2DFD8316-9EF1-3210-908C-4CB61961C1AC}"},
{"{E34002C7-8CE7-3F76-B36C-09FA973BC4F6}"},
//vcredist_IA64 - ProductCode
{"{2B547B43-DB50-3139-9EBE-37D419E0F5FA}"},
{"{977AD349-C2A8-39DD-9273-285C08987C7B}"},
{"{515643D1-4E9E-342F-A75A-D1F16448DC04}"},
{"{5827ECE1-AEB0-328E-B813-6FC68622C1F9}"},
{"{9363B366-8370-34F7-8164-25052EBF35FD}"},
{"{4EC84186-70BB-3121-9C1B-C63512D7126E}"},
{"{1F7B9797-A3C8-3B98-85C4-00620F221CE8}"},
{"{6BE0A7C7-3462-30EE-8B77-D21D7848D967}"},
{"{BF58DC07-38AB-3887-8000-70173F9650EA}"},
{"{D289009A-2728-3D0A-833E-F08E0E58934C}"},
{"{9476DC14-00C3-3C36-A435-00D714CF77B8}"},
{"{678835D7-D524-3C0E-9C33-1D3767FDA6BF}"},
//vc10_x86 - ProductCode
{"{196BB40D-1578-3D01-B289-BEFC77A11A1E}"},
{"{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}"},
//vc10_x64 - ProductCode
{"{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}"},
{"{1D8E6291-B0D5-35EC-8441-6616F567A0F7}"},
//vc10_x86 - ProductCode
{"{94D70749-4281-39AC-AD90-B56A0E0A402E}"},
{"{88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}"},
{"{C1A35166-4301-38E9-BA67-02823AD72A1B}"},
};
Я надеюсь, что эта статья поможет тем, кто нуждается в обнаружении видеомагнитофона, и вам было так же интересно читать ее, как и я!