static void Main(string[] args) { string regMain = "Software//Microsoft//Windows//CurrentVersion//Uninstall"; string[] subKey = { "DisplayName" }; ManagementClass mClass = new ManagementClass(@"//" + "ANSCN036" + @"/root/DEFAULT:StdRegProv"); mClass.Scope.Options.Password = "password";//密码 mClass.Scope.Options.Username = "Administrator";//用户名 mClass.Scope.Options.Authority = "NTLMDOMAIN:DOMAIN";//如果是本机用户,则填写DOMAIN;域用户,则填写所在域 object[] method_args = new object[] { 0x80000002, regMain, null }; object result = mClass.InvokeMethod("EnumKey", method_args);//得到所有子键 string[] sAppList = (String[])method_args[2];//保存子键 foreach (string sName in sAppList) { ManagementBaseObject inParams = mClass.GetMethodParameters("GetStringValue"); inParams["hDefKey"] = 0x80000002; inParams["sSubKeyName"] = regMain + @"/" +sName; inParams["sValueName"] = "DisplayName"; ManagementBaseObject curRes = mClass.InvokeMethod("GetStringValue", inParams, null);//得到显示名 if (curRes["sValue"] != null) { string keyValue = curRes["sValue"].ToString(); Console.WriteLine(keyValue);//列出所有软件名 } } Console.ReadKey(); } Scope.Options.Authority的设定如果不写,很有可能会返回一个拒绝访问的错误!