登 录
今天看到版里的帖子,随手写了一个。没难度,纯思路。。。也没啥用处,因为要从ASP.Net访问注册表,一般的服务器都不会给权限的。本机调试通过,就当是个玩具吧。
水晶报表安装后,会在注册表写入信息,这也是本方法的核心。
不多说,代码如下
using System; using Microsoft.Win32; using System.Collections; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Hashtable hsCodes = new Hashtable(); Hashtable hsOutput = new Hashtable(); hsCodes.Add("10.0", "水晶报表独立版本10"); hsCodes.Add("10.2", "水晶报表VS2005内置版本 10.2.3600.0"); hsCodes.Add("10.5", "水晶报表VS2008内置版本 10.5.3700.0 "); hsCodes.Add("Suite 11.0", "水晶报表独立版本XI 11.0.3300.0 "); hsCodes.Add("Suite 11.5", "水晶报表独立版本XI SP1/SP2 11.5.3300.0/11.5.8.826"); hsCodes.Add("Suite 11.7", "水晶报表独立版本XI SP4 11.7"); hsCodes.Add("Suite 12.0", "水晶报表独立版本2008 12.0 SP1/SP2"); Response.Write("当前服务器已安装或安装过以下版本的水晶报表:<hr/>"); try { RegistryKey regkey; //找//HKEY_LOCAL_MACHINE/SOFTWARE/Business Objects regkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE/Business Objects"); string[] n = regkey.GetSubKeyNames(); for (int i = 0; i < n.Length; i++) { hsOutput.Add(n[i], n[i]); } //找//HKEY_LOCAL_MACHINE/SOFTWARE/Crystal Decisions regkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE/Crystal Decisions"); n = regkey.GetSubKeyNames(); for (int i = 0; i < n.Length; i++) { if (!hsOutput.ContainsKey(n[i])) { hsOutput.Add(n[i], n[i]); } } if (hsOutput.Count == 0) { Response.Write("未安装任何版本"); } else { foreach (DictionaryEntry dt in hsOutput) { if (hsCodes.ContainsKey(dt.Key)) { Response.Write(hsCodes[dt.Key] + "<br>"); } } } hsCodes.Clear(); hsOutput.Clear(); } catch(Exception e1 ) { Response.Write("错误捕获:" + e1.Message); } } }
抱歉!评论已关闭.