├── .gitattributes
├── .gitignore
├── AS
├── AS.csproj
├── AssemblyInfo.cs
├── Program.cs
├── Properties
│ ├── Resources.cs
│ └── Resources.resx
├── app.config
└── lib
│ └── AddInScanEngine.dll
├── AddInScanEngine
├── AddInData.cs
├── AddInScanEngine.csproj
├── AddInScanEngine.sln
├── AssemblyInfo.cs
├── AssemblyScanner.cs
├── ComAddInUtilities.cs
├── Controller.cs
├── GacEnumerator.cs
├── Globals.cs
├── GridProxy.cs
├── IAddInGridControl.cs
├── ILReader.cs
├── ManifestReader.cs
├── MethodInstruction.cs
├── ModuleScopeTokenResolver.cs
├── NativeAddInScanner.cs
├── NativeMethods.cs
├── Properties
│ ├── Resources.cs
│ └── Resources.resx
├── RegistryReader.cs
├── ReportWriter.cs
└── SecondaryExtensibility.cs
├── AddInSpy.sln
├── AddInSpy
├── AddInDataControl.cs
├── AddInDataControl.resx
├── AddInGridControl.cs
├── AddInGridControl.resx
├── AddInSpy.csproj
├── AddInSpyWindow.xaml.cs
├── App.cs
├── AssemblyInfo.cs
├── CheckedComboClick.cs
├── CheckedComboControl.xaml.cs
├── CheckedComboEventArgs.cs
├── HelpWindow.xaml.cs
├── Properties
│ ├── Resources.cs
│ ├── Resources.resx
│ └── Settings.cs
├── WfDataProxyWindow.xaml.cs
├── WfGridProxyControl.xaml.cs
├── addinspywindow.xaml
├── app.config
├── checkedcombocontrol.xaml
├── helpwindow.xaml
├── images
│ ├── addinspy.ico
│ ├── help.png
│ ├── homehs.png
│ ├── navback.png
│ ├── navforward.png
│ ├── refresh.png
│ └── report.png
├── lib
│ └── AddInScanEngine.dll
├── wfdataproxywindow.xaml
└── wfgridproxycontrol.xaml
├── LICENSE.txt
├── README.md
└── appveyor.yml
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by http://www.gitignore.io
2 |
3 | ### VisualStudio ###
4 | ## Ignore Visual Studio temporary files, build results, and
5 | ## files generated by popular Visual Studio add-ons.
6 |
7 | # User-specific files
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | build/
21 | bld/
22 | [Bb]in/
23 | [Oo]bj/
24 |
25 | # Roslyn cache directories
26 | *.sln.ide
27 | *.ide/
28 |
29 | # MSTest test Results
30 | [Tt]est[Rr]esult*/
31 | [Bb]uild[Ll]og.*
32 |
33 | #NUNIT
34 | *.VisualState.xml
35 | TestResult.xml
36 |
37 | # Build Results of an ATL Project
38 | [Dd]ebugPS/
39 | [Rr]eleasePS/
40 | dlldata.c
41 |
42 | *_i.c
43 | *_p.c
44 | *_i.h
45 | *.ilk
46 | *.meta
47 | *.obj
48 | *.pch
49 | *.pdb
50 | *.pgc
51 | *.pgd
52 | *.rsp
53 | *.sbr
54 | *.tlb
55 | *.tli
56 | *.tlh
57 | *.tmp
58 | *.tmp_proj
59 | *.log
60 | *.vspscc
61 | *.vssscc
62 | .builds
63 | *.pidb
64 | *.svclog
65 | *.scc
66 |
67 | # Chutzpah Test files
68 | _Chutzpah*
69 |
70 | # Visual C++ cache files
71 | ipch/
72 | *.aps
73 | *.ncb
74 | *.opensdf
75 | *.sdf
76 | *.cachefile
77 |
78 | # Visual Studio profiler
79 | *.psess
80 | *.vsp
81 | *.vspx
82 |
83 | # TFS 2012 Local Workspace
84 | $tf/
85 |
86 | # Guidance Automation Toolkit
87 | *.gpState
88 |
89 | # ReSharper is a .NET coding add-in
90 | _ReSharper*/
91 | *.[Rr]e[Ss]harper
92 | *.DotSettings.user
93 |
94 | # JustCode is a .NET coding addin-in
95 | .JustCode
96 |
97 | # TeamCity is a build add-in
98 | _TeamCity*
99 |
100 | # DotCover is a Code Coverage Tool
101 | *.dotCover
102 |
103 | # NCrunch
104 | _NCrunch_*
105 | .*crunch*.local.xml
106 |
107 | # MightyMoose
108 | *.mm.*
109 | AutoTest.Net/
110 |
111 | # Web workbench (sass)
112 | .sass-cache/
113 |
114 | # Installshield output folder
115 | [Ee]xpress/
116 |
117 | # DocProject is a documentation generator add-in
118 | DocProject/buildhelp/
119 | DocProject/Help/*.HxT
120 | DocProject/Help/*.HxC
121 | DocProject/Help/*.hhc
122 | DocProject/Help/*.hhk
123 | DocProject/Help/*.hhp
124 | DocProject/Help/Html2
125 | DocProject/Help/html
126 |
127 | # Click-Once directory
128 | publish/
129 |
130 | # Publish Web Output
131 | *.[Pp]ublish.xml
132 | *.azurePubxml
133 | # TODO: Comment the next line if you want to checkin your web deploy settings
134 | # but database connection strings (with potential passwords) will be unencrypted
135 | *.pubxml
136 | *.publishproj
137 |
138 | # NuGet Packages
139 | *.nupkg
140 | # The packages folder can be ignored because of Package Restore
141 | **/packages/*
142 | # except build/, which is used as an MSBuild target.
143 | !**/packages/build/
144 | # If using the old MSBuild-Integrated Package Restore, uncomment this:
145 | #!**/packages/repositories.config
146 |
147 | # Windows Azure Build Output
148 | csx/
149 | *.build.csdef
150 |
151 | # Windows Store app package directory
152 | AppPackages/
153 |
154 | # Others
155 | sql/
156 | *.Cache
157 | ClientBin/
158 | [Ss]tyle[Cc]op.*
159 | ~$*
160 | *.dbmdl
161 | *.dbproj.schemaview
162 | *.pfx
163 | *.publishsettings
164 | node_modules/
165 | *.metaproj
166 | *.metaproj.tmp
167 |
168 | # RIA/Silverlight projects
169 | Generated_Code/
170 |
171 | # Backup & report files from converting an old project file
172 | # to a newer Visual Studio version. Backup files are not needed,
173 | # because we have git ;-)
174 | _UpgradeReport_Files/
175 | Backup*/
176 | UpgradeLog*.XML
177 | UpgradeLog*.htm
178 |
179 | # SQL Server files
180 | *.mdf
181 | *.ldf
182 |
183 | # Business Intelligence projects
184 | *.rdl.data
185 | *.bim.layout
186 | *.bim_*.settings
187 |
188 | # Microsoft Fakes
189 | FakesAssemblies/
190 |
191 | # Codeplex
192 | BuildProcessTemplates/
193 |
194 |
195 | ### SVN ###
196 | .svn/
197 |
198 |
199 | ### SublimeText ###
200 | # cache files for sublime text
201 | *.tmlanguage.cache
202 | *.tmPreferences.cache
203 | *.stTheme.cache
204 |
205 | # workspace files are user-specific
206 | *.sublime-workspace
207 |
208 | # project files should be checked into the repository, unless a significant
209 | # proportion of contributors will probably not be using SublimeText
210 | # *.sublime-project
211 |
212 | # sftp configuration file
213 | sftp-config.json
214 |
215 |
216 | ### Windows ###
217 | # Windows image file caches
218 | Thumbs.db
219 | ehthumbs.db
220 |
221 | # Folder config file
222 | Desktop.ini
223 |
224 | # Recycle Bin used on file shares
225 | $RECYCLE.BIN/
226 |
227 | # Windows Installer files
228 | *.cab
229 | *.msi
230 | *.msm
231 | *.msp
232 |
233 | # Windows shortcuts
234 | *.lnk
235 |
--------------------------------------------------------------------------------
/AS/AS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {26FB0558-0C68-49D4-96BE-CB305EE1FD1E}
8 | Exe
9 | AS
10 | AS
11 | v4.5
12 |
13 |
14 |
15 |
16 | 2.0
17 |
18 | publish\
19 | true
20 | Disk
21 | false
22 | Foreground
23 | 7
24 | Days
25 | false
26 | false
27 | true
28 | 0
29 | 1.5.0.0
30 | false
31 | false
32 | true
33 |
34 |
35 | AnyCPU
36 | true
37 | full
38 | false
39 | bin\Debug\
40 | DEBUG;TRACE
41 | prompt
42 | 4
43 | false
44 |
45 |
46 | AnyCPU
47 | pdbonly
48 | true
49 | bin\Release\
50 | TRACE
51 | prompt
52 | 4
53 | false
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 | {5daf28b6-078c-457d-9591-13dfe22c1ce3}
69 | AddInScanEngine
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 | False
78 | .NET Framework 3.5 SP1 Client Profile
79 | false
80 |
81 |
82 | False
83 | .NET Framework 3.5 SP1
84 | true
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/AS/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | [assembly: AssemblyCompany("Microsoft")]
5 | [assembly: AssemblyProduct("AS")]
6 | [assembly: AssemblyTitle("AS")]
7 | [assembly: AssemblyDescription("")]
8 | [assembly: AssemblyConfiguration("")]
9 | [assembly: AssemblyCopyright("Copyright © Microsoft 2008")]
10 | [assembly: AssemblyTrademark("")]
11 | [assembly: ComVisible(false)]
12 | [assembly: Guid("6941cb5f-95c9-4fd1-90e4-45f96eb8b2c4")]
13 | [assembly: AssemblyFileVersion("1.5.0.0")]
14 | [assembly: AssemblyVersion("1.5.0.0")]
15 |
--------------------------------------------------------------------------------
/AS/Program.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AS.Program
3 | // Assembly: AS, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: AFE2FA58-896E-487A-A656-63ED650F5324
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AS.exe
6 |
7 | using AddInSpy;
8 | using AS.Properties;
9 | using System;
10 |
11 | namespace AS
12 | {
13 | public class Program
14 | {
15 | private string[] hostNames = new string[11]
16 | {
17 | "Access",
18 | "Excel",
19 | "FrontPage",
20 | "InfoPath",
21 | "Outlook",
22 | "PowerPoint",
23 | "Project",
24 | "Publisher",
25 | "SharePoint Designer",
26 | "Visio",
27 | "Word"
28 | };
29 | private string[] scanNames = new string[7]
30 | {
31 | Resources.SCAN_HKCU,
32 | Resources.SCAN_HKLM,
33 | Resources.SCAN_REMOTE,
34 | Resources.SCAN_MANAGED_INTERFACES,
35 | Resources.SCAN_NATIVE_INTERFACES,
36 | Resources.SCAN_DISABLED_ITEMS,
37 | Resources.SCAN_FORMREGIONS
38 | };
39 | private string[] reportTypes = new string[2]
40 | {
41 | Resources.REPORT_CONTEXT,
42 | Resources.REPORT_ADDINS
43 | };
44 | private Controller controller;
45 |
46 | public Program()
47 | {
48 | this.controller = new Controller(false);
49 | }
50 |
51 | public static void Main(string[] args)
52 | {
53 | Program program = new Program();
54 | try
55 | {
56 | if (args[0] == Resources.ARG_HELP_SLASH || args[0] == Resources.ARG_HELP_DASH || !program.ParseCommandLine(args))
57 | {
58 | Console.WriteLine(string.Format(Resources.SYNTAX_MESSAGE, (object) Environment.NewLine));
59 | }
60 | else
61 | {
62 | program.controller.Refresh();
63 | program.controller.GenerateReport();
64 | }
65 | }
66 | catch (Exception ex)
67 | {
68 | Console.WriteLine(ex.ToString());
69 | }
70 | }
71 |
72 | public bool ParseCommandLine(string[] args)
73 | {
74 | bool flag = true;
75 | if (args.Length > 0)
76 | {
77 | foreach (string str in args)
78 | {
79 | if (str.StartsWith("/") || str.StartsWith("-"))
80 | {
81 | string[] strArray1 = str.Split(new char[2]
82 | {
83 | '=',
84 | ','
85 | });
86 | if (strArray1.Length < 2)
87 | {
88 | flag = false;
89 | break;
90 | }
91 | else
92 | {
93 | string[] strArray2 = new string[strArray1.Length - 1];
94 | Array.Copy((Array) strArray1, 1, (Array) strArray2, 0, strArray2.Length);
95 | for (int index = 0; index < strArray2.Length; ++index)
96 | strArray2[index] = strArray2[index].ToLowerInvariant();
97 | switch (strArray1[0].ToLowerInvariant())
98 | {
99 | case "/h":
100 | case "/hosts":
101 | case "-h":
102 | case "-hosts":
103 | if (strArray2.Length == 1 && strArray2[0] == Resources.OPTION_ALL)
104 | {
105 | strArray2 = (string[]) this.hostNames.Clone();
106 | }
107 | else
108 | {
109 | for (int index = 0; index < strArray2.Length; ++index)
110 | {
111 | switch (strArray2[index])
112 | {
113 | case "access":
114 | strArray2[index] = "Access";
115 | break;
116 | case "excel":
117 | strArray2[index] = "Excel";
118 | break;
119 | case "frontpage":
120 | strArray2[index] = "FrontPage";
121 | break;
122 | case "infopath":
123 | strArray2[index] = "InfoPath";
124 | break;
125 | case "outlook":
126 | strArray2[index] = "Outlook";
127 | break;
128 | case "powerpoint":
129 | strArray2[index] = "PowerPoint";
130 | break;
131 | case "project":
132 | strArray2[index] = "Project";
133 | break;
134 | case "publisher":
135 | strArray2[index] = "Publisher";
136 | break;
137 | case "sharepointdesigner":
138 | strArray2[index] = "SharePoint Designer";
139 | break;
140 | case "visio":
141 | strArray2[index] = "Visio";
142 | break;
143 | case "word":
144 | strArray2[index] = "Word";
145 | break;
146 | default:
147 | flag = false;
148 | break;
149 | }
150 | }
151 | }
152 | this.controller.HostNames = strArray2;
153 | break;
154 | case "/s":
155 | case "/scans":
156 | case "-s":
157 | case "-scans":
158 | if (strArray2.Length == 1 && strArray2[0] == Resources.OPTION_ALL)
159 | {
160 | strArray2 = (string[]) this.scanNames.Clone();
161 | }
162 | else
163 | {
164 | for (int index = 0; index < strArray2.Length; ++index)
165 | {
166 | switch (strArray2[index])
167 | {
168 | case "hkcu":
169 | strArray2[index] = Resources.SCAN_HKCU;
170 | break;
171 | case "hklm":
172 | strArray2[index] = Resources.SCAN_HKLM;
173 | break;
174 | case "remote":
175 | strArray2[index] = Resources.SCAN_REMOTE;
176 | break;
177 | case "managedinterfaces":
178 | strArray2[index] = Resources.SCAN_MANAGED_INTERFACES;
179 | break;
180 | case "nativeinterfaces":
181 | strArray2[index] = Resources.SCAN_NATIVE_INTERFACES;
182 | break;
183 | case "disableditems":
184 | strArray2[index] = Resources.SCAN_DISABLED_ITEMS;
185 | break;
186 | case "formregions":
187 | strArray2[index] = Resources.SCAN_FORMREGIONS;
188 | break;
189 | default:
190 | flag = false;
191 | break;
192 | }
193 | }
194 | }
195 | this.controller.ScanNames = strArray2;
196 | break;
197 | case "/r":
198 | case "/reports":
199 | case "-r":
200 | case "-reports":
201 | if (strArray2.Length == 1 && strArray2[0] == Resources.OPTION_ALL)
202 | {
203 | strArray2 = (string[]) this.reportTypes.Clone();
204 | }
205 | else
206 | {
207 | for (int index = 0; index < strArray2.Length; ++index)
208 | {
209 | switch (strArray2[index])
210 | {
211 | case "context":
212 | strArray2[index] = Resources.REPORT_CONTEXT;
213 | break;
214 | case "addins":
215 | strArray2[index] = Resources.REPORT_ADDINS;
216 | break;
217 | default:
218 | flag = false;
219 | break;
220 | }
221 | }
222 | }
223 | this.controller.ReportTypes = strArray2;
224 | break;
225 | case "/o":
226 | case "/output":
227 | case "-o":
228 | case "-output":
229 | this.controller.ReportFileName = strArray1[1];
230 | break;
231 | default:
232 | flag = false;
233 | break;
234 | }
235 | }
236 | }
237 | else
238 | {
239 | flag = false;
240 | break;
241 | }
242 | }
243 | }
244 | return flag;
245 | }
246 | }
247 | }
248 |
--------------------------------------------------------------------------------
/AS/Properties/Resources.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AS.Properties.Resources
3 | // Assembly: AS, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: AFE2FA58-896E-487A-A656-63ED650F5324
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AS.exe
6 |
7 | using System.CodeDom.Compiler;
8 | using System.ComponentModel;
9 | using System.Diagnostics;
10 | using System.Globalization;
11 | using System.Resources;
12 | using System.Runtime.CompilerServices;
13 |
14 | namespace AS.Properties
15 | {
16 | [DebuggerNonUserCode]
17 | [CompilerGenerated]
18 | [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
19 | internal class Resources
20 | {
21 | private static ResourceManager resourceMan;
22 | private static CultureInfo resourceCulture;
23 |
24 | [EditorBrowsable(EditorBrowsableState.Advanced)]
25 | internal static ResourceManager ResourceManager
26 | {
27 | get
28 | {
29 | if (object.ReferenceEquals((object) Resources.resourceMan, (object) null))
30 | Resources.resourceMan = new ResourceManager("AS.Properties.Resources", typeof (Resources).Assembly);
31 | return Resources.resourceMan;
32 | }
33 | }
34 |
35 | [EditorBrowsable(EditorBrowsableState.Advanced)]
36 | internal static CultureInfo Culture
37 | {
38 | get
39 | {
40 | return Resources.resourceCulture;
41 | }
42 | set
43 | {
44 | Resources.resourceCulture = value;
45 | }
46 | }
47 |
48 | internal static string ARG_HELP_DASH
49 | {
50 | get
51 | {
52 | return Resources.ResourceManager.GetString("ARG_HELP_DASH", Resources.resourceCulture);
53 | }
54 | }
55 |
56 | internal static string ARG_HELP_SLASH
57 | {
58 | get
59 | {
60 | return Resources.ResourceManager.GetString("ARG_HELP_SLASH", Resources.resourceCulture);
61 | }
62 | }
63 |
64 | internal static string OPTION_ALL
65 | {
66 | get
67 | {
68 | return Resources.ResourceManager.GetString("OPTION_ALL", Resources.resourceCulture);
69 | }
70 | }
71 |
72 | internal static string REPORT_ADDINS
73 | {
74 | get
75 | {
76 | return Resources.ResourceManager.GetString("REPORT_ADDINS", Resources.resourceCulture);
77 | }
78 | }
79 |
80 | internal static string REPORT_CONTEXT
81 | {
82 | get
83 | {
84 | return Resources.ResourceManager.GetString("REPORT_CONTEXT", Resources.resourceCulture);
85 | }
86 | }
87 |
88 | internal static string SCAN_DISABLED_ITEMS
89 | {
90 | get
91 | {
92 | return Resources.ResourceManager.GetString("SCAN_DISABLED_ITEMS", Resources.resourceCulture);
93 | }
94 | }
95 |
96 | internal static string SCAN_FORMREGIONS
97 | {
98 | get
99 | {
100 | return Resources.ResourceManager.GetString("SCAN_FORMREGIONS", Resources.resourceCulture);
101 | }
102 | }
103 |
104 | internal static string SCAN_HKCU
105 | {
106 | get
107 | {
108 | return Resources.ResourceManager.GetString("SCAN_HKCU", Resources.resourceCulture);
109 | }
110 | }
111 |
112 | internal static string SCAN_HKLM
113 | {
114 | get
115 | {
116 | return Resources.ResourceManager.GetString("SCAN_HKLM", Resources.resourceCulture);
117 | }
118 | }
119 |
120 | internal static string SCAN_MANAGED_INTERFACES
121 | {
122 | get
123 | {
124 | return Resources.ResourceManager.GetString("SCAN_MANAGED_INTERFACES", Resources.resourceCulture);
125 | }
126 | }
127 |
128 | internal static string SCAN_NATIVE_INTERFACES
129 | {
130 | get
131 | {
132 | return Resources.ResourceManager.GetString("SCAN_NATIVE_INTERFACES", Resources.resourceCulture);
133 | }
134 | }
135 |
136 | internal static string SCAN_REMOTE
137 | {
138 | get
139 | {
140 | return Resources.ResourceManager.GetString("SCAN_REMOTE", Resources.resourceCulture);
141 | }
142 | }
143 |
144 | internal static string SYNTAX_MESSAGE
145 | {
146 | get
147 | {
148 | return Resources.ResourceManager.GetString("SYNTAX_MESSAGE", Resources.resourceCulture);
149 | }
150 | }
151 |
152 | internal Resources()
153 | {
154 | }
155 | }
156 | }
157 |
--------------------------------------------------------------------------------
/AS/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | Context
122 |
123 |
124 | -?
125 |
126 |
127 | Native Interfaces
128 |
129 |
130 | Managed Interfaces
131 |
132 |
133 | /?
134 |
135 |
136 | AddIns
137 |
138 |
139 | Syntax (arguments in any order, case-insensitive, no spaces allowed except between option lists):{0} as [/h(osts)= <all|comma-separated hostNames>] [/s(cans)= <all|comma-separated scanNames>] [/r(eport)= <all|comma-separated reportTypes>]{0}{0}where:{0} h(osts)=[Access,Excel,FrontPage,InfoPath,Outlook,PowerPoint,Project,Publisher,SharePointDesigner,Visio,Word]{0} s(cans)=[HKCU,HKLM,Remote,ManagedInterfaces,NativeInterfaces,DisabledItems,FormRegions]{0} r(eport)=[Context,AddIns]{0}{0}examples:{0} as /h=Excel,Outlook,Word /s=HKCU,HKLM,ManagedInterfaces,NativeInterfaces,DisabledItems /r=Context,AddIns{0} as /hosts=excel,outlook,word /scans=hkcu,hklm,managedinterfaces,nativeinterfaces /reports=addins{0} as /h=all /s=HKCU,HKLM,DisabledItems /r=all{0} as /h=all /s=all /r=all{0}
140 |
141 |
142 | FormRegions
143 |
144 |
145 | Disabled Items
146 |
147 |
148 | all
149 |
150 |
151 | HKCU
152 |
153 |
154 | HKLM
155 |
156 |
157 | Remote
158 |
159 |
--------------------------------------------------------------------------------
/AS/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/AS/lib/AddInScanEngine.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NetOfficeFw/AddInSpy/1e1105a344110bcd291dc09b18338663e4374bb0/AS/lib/AddInScanEngine.dll
--------------------------------------------------------------------------------
/AddInScanEngine/AddInScanEngine.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {5DAF28B6-078C-457D-9591-13DFE22C1CE3}
8 | Library
9 | AddInScanEngine
10 | AddInSpy
11 | v4.5
12 |
13 |
14 |
15 |
16 | 2.0
17 |
18 | publish\
19 | true
20 | Disk
21 | false
22 | Foreground
23 | 7
24 | Days
25 | false
26 | false
27 | true
28 | 0
29 | 1.5.0.0
30 | false
31 | false
32 | true
33 |
34 |
35 | AnyCPU
36 | true
37 | full
38 | false
39 | bin\Debug\
40 | DEBUG;TRACE
41 | prompt
42 | 4
43 | false
44 |
45 |
46 | AnyCPU
47 | pdbonly
48 | true
49 | bin\Release\
50 | TRACE
51 | prompt
52 | 4
53 | false
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 | False
90 | .NET Framework 3.5 SP1 Client Profile
91 | false
92 |
93 |
94 | False
95 | .NET Framework 3.5 SP1
96 | true
97 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/AddInScanEngine/AddInScanEngine.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 9.00
3 | # Visual Studio 2005
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInScanEngine", "AddInScanEngine.csproj", "{5DAF28B6-078C-457D-9591-13DFE22C1CE3}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Any CPU = Debug|Any CPU
9 | Release|Any CPU = Release|Any CPU
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {5DAF28B6-078C-457D-9591-13DFE22C1CE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13 | {5DAF28B6-078C-457D-9591-13DFE22C1CE3}.Debug|Any CPU.Build.0 = Debug|Any CPU
14 | {5DAF28B6-078C-457D-9591-13DFE22C1CE3}.Release|Any CPU.ActiveCfg = Release|Any CPU
15 | {5DAF28B6-078C-457D-9591-13DFE22C1CE3}.Release|Any CPU.Build.0 = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/AddInScanEngine/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | [assembly: ComVisible(false)]
5 | [assembly: AssemblyFileVersion("1.5.0.0")]
6 | [assembly: AssemblyTrademark("")]
7 | [assembly: Guid("1d4d5083-b5dd-4656-bceb-63adbf5fba40")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyCopyright("Copyright © Microsoft 2008")]
10 | [assembly: AssemblyTitle("AddInScanEngine")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("Microsoft")]
13 | [assembly: AssemblyProduct("AddInScanEngine")]
14 | [assembly: AssemblyVersion("1.5.0.0")]
15 |
--------------------------------------------------------------------------------
/AddInScanEngine/AssemblyScanner.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.AssemblyScanner
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using AddInSpy.Properties;
8 | using System;
9 | using System.Collections;
10 | using System.Collections.Generic;
11 | using System.Diagnostics;
12 | using System.IO;
13 | using System.Reflection;
14 | using System.Reflection.Emit;
15 |
16 | namespace AddInSpy
17 | {
18 | internal static class AssemblyScanner
19 | {
20 | private const string ribbonTypeName = "Microsoft.Office.Tools.Ribbon.OfficeRibbon";
21 | private const string formRegionTypeName = "Microsoft.Office.Tools.Outlook.FormRegionControl";
22 | private static Type[] exportedTypes;
23 | private static string assemblyFolder;
24 |
25 | public static string[] GetAssemblyInfo(string fileName, string hostName, bool isVstoAddIn)
26 | {
27 | string[] strArray = (string[]) null;
28 | try
29 | {
30 | assemblyFolder = Path.GetDirectoryName(fileName);
31 | Assembly assembly = Assembly.ReflectionOnlyLoadFrom(fileName);
32 | exportedTypes = assembly.GetExportedTypes();
33 | ArrayList assemblyInfo = new ArrayList();
34 | assemblyInfo.Add((object) assembly.FullName);
35 | assemblyInfo.Add((object) assembly.ImageRuntimeVersion);
36 | if (isVstoAddIn)
37 | {
38 | CheckFormRegionType(assembly, ref assemblyInfo);
39 | CheckRibbonType(ref assemblyInfo);
40 | CheckCustomTaskPaneType(assembly, ref assemblyInfo);
41 | }
42 | int num = 0;
43 | foreach (KeyValuePair keyValuePair in (IEnumerable>) new SecondaryExtensibility(hostName).AddInInterfaces)
44 | {
45 | if (IsInterfaceImplemented(keyValuePair.Value))
46 | {
47 | assemblyInfo.Add((object) keyValuePair.Key);
48 | ++num;
49 | }
50 | }
51 | if (assemblyInfo.Count < 3)
52 | assemblyInfo.Add((object) Resources.SECONDARY_INTERFACES_NONE);
53 | strArray = (string[]) assemblyInfo.ToArray(typeof (string));
54 | }
55 | catch (TypeLoadException ex)
56 | {
57 | Globals.AddErrorMessage(string.Format(Resources.TYPELOADEXCEPTION_MESSAGE, (object) Environment.NewLine, (object) fileName, (object) ex.ToString()));
58 | }
59 | catch (Exception ex)
60 | {
61 | Globals.AddException(ex);
62 | }
63 | return strArray;
64 | }
65 |
66 | private static bool IsInterfaceImplemented(Guid iid)
67 | {
68 | bool flag = false;
69 | foreach (Type type in exportedTypes)
70 | {
71 | if (type.FindInterfaces(new TypeFilter(AssemblyScanner.InterfaceFilterHandler), (object) iid).Length > 0)
72 | {
73 | flag = true;
74 | break;
75 | }
76 | }
77 | return flag;
78 | }
79 |
80 | private static bool InterfaceFilterHandler(Type type, object filterCondition)
81 | {
82 | bool flag = false;
83 | if (type != null && type.GUID == (Guid) filterCondition)
84 | flag = true;
85 | return flag;
86 | }
87 |
88 | internal static Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
89 | {
90 | Assembly assembly = (Assembly) null;
91 | string assemblyName = args.Name.Split(',')[0];
92 | try
93 | {
94 | try
95 | {
96 | string assemblyFile = Path.Combine(assemblyFolder, assemblyName + ".dll");
97 | if (assemblyFile != null && assemblyFile.Length > 0)
98 | {
99 | try
100 | {
101 | assembly = Assembly.ReflectionOnlyLoadFrom(assemblyFile);
102 | }
103 | catch (Exception ex1)
104 | {
105 | try
106 | {
107 | assembly = Assembly.ReflectionOnlyLoadFrom(GetAssemblyGacPath(assemblyName));
108 | }
109 | catch (Exception ex2)
110 | {
111 | assembly = Assembly.ReflectionOnlyLoadFrom(assemblyFile + ".deploy");
112 | }
113 | }
114 | }
115 | }
116 | catch (Exception ex1)
117 | {
118 | string assemblyFile = Path.Combine(assemblyFolder, assemblyName + ".exe");
119 | if (assemblyFile != null && assemblyFile.Length > 0)
120 | {
121 | try
122 | {
123 | assembly = Assembly.ReflectionOnlyLoadFrom(assemblyFile);
124 | }
125 | catch (Exception ex2)
126 | {
127 | try
128 | {
129 | assembly = Assembly.ReflectionOnlyLoadFrom(GetAssemblyGacPath(assemblyName));
130 | }
131 | catch (Exception ex3)
132 | {
133 | assembly = Assembly.ReflectionOnlyLoadFrom(assemblyFile + ".deploy");
134 | }
135 | }
136 | }
137 | }
138 | }
139 | catch (Exception ex)
140 | {
141 | Debug.WriteLine(ex.ToString());
142 | return assembly;
143 | }
144 | return assembly;
145 | }
146 |
147 | private static string GetAssemblyGacPath(string assemblyName)
148 | {
149 | string str1 = (string) null;
150 | GacEnumerator gacEnumerator = new GacEnumerator(assemblyName);
151 | string str2 = string.Empty;
152 | while (true)
153 | {
154 | string nextAssembly = gacEnumerator.GetNextAssembly();
155 | try
156 | {
157 | if (nextAssembly != null)
158 | {
159 | if (str2 != string.Empty && CompareVersionNumbers(str2, nextAssembly) == 1)
160 | {
161 | str1 = GacEnumerator.QueryAssemblyInfo(str2);
162 | break;
163 | }
164 | else
165 | {
166 | str1 = GacEnumerator.QueryAssemblyInfo(nextAssembly);
167 | str2 = nextAssembly;
168 | }
169 | }
170 | else
171 | break;
172 | }
173 | catch (Exception ex)
174 | {
175 | Globals.AddException(ex);
176 | }
177 | }
178 | return str1;
179 | }
180 |
181 | public static int CompareVersionNumbers(string assemblyA, string assemblyB)
182 | {
183 | int num = 0;
184 | string[] strArray1 = assemblyA.Split(',')[1].Substring("Version=".Length + 1).Split('.');
185 | string[] strArray2 = assemblyB.Split(',')[1].Substring("Version=".Length + 1).Split('.');
186 | int[] numArray1 = new int[4];
187 | int[] numArray2 = new int[4];
188 | for (int index = 0; index < 4; ++index)
189 | {
190 | numArray1[index] = Convert.ToInt32(strArray1[index]);
191 | numArray2[index] = Convert.ToInt32(strArray2[index]);
192 | }
193 | if (numArray1[0] < numArray2[0])
194 | num = -1;
195 | else if (numArray1[0] > numArray2[0])
196 | num = 1;
197 | else if (numArray1[1] < numArray2[1])
198 | num = -1;
199 | else if (numArray1[1] > numArray2[1])
200 | num = 1;
201 | else if (numArray1[2] < numArray2[2])
202 | num = -1;
203 | else if (numArray1[2] > numArray2[2])
204 | num = 1;
205 | else if (numArray1[3] < numArray2[3])
206 | num = -1;
207 | else if (numArray1[3] > numArray2[3])
208 | num = 1;
209 | return num;
210 | }
211 |
212 | private static void CheckFormRegionType(Assembly assembly, ref ArrayList assemblyInfo)
213 | {
214 | try
215 | {
216 | foreach (Type type in assembly.GetTypes())
217 | {
218 | if (type.BaseType != null && type.BaseType.FullName == formRegionTypeName)
219 | {
220 | assemblyInfo.Add((object) Resources.VSTO_FORMREGION);
221 | break;
222 | }
223 | }
224 | }
225 | catch (Exception ex)
226 | {
227 | Globals.AddException(ex);
228 | }
229 | }
230 |
231 | private static void CheckRibbonType(ref ArrayList assemblyInfo)
232 | {
233 | foreach (Type type in exportedTypes)
234 | {
235 | if (type.BaseType != null && type.BaseType.BaseType != null && (type.BaseType.FullName == ribbonTypeName || type.BaseType.BaseType.FullName == ribbonTypeName))
236 | {
237 | assemblyInfo.Add((object) Resources.VSTO_RIBBON);
238 | break;
239 | }
240 | }
241 | }
242 |
243 | private static void CheckCustomTaskPaneType(Assembly assembly, ref ArrayList assemblyInfo)
244 | {
245 | try
246 | {
247 | foreach (Type type in assembly.GetTypes())
248 | {
249 | foreach (MethodBase method1 in type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
250 | {
251 | foreach (MethodInstruction methodInstruction in new ILReader(method1))
252 | {
253 | try
254 | {
255 | if (methodInstruction != null)
256 | {
257 | if (methodInstruction.OpCode == OpCodes.Callvirt)
258 | {
259 | MethodBase method2 = methodInstruction.Method;
260 | if (method2 != null && string.Format("{0}.{1}", (object) method2.DeclaringType, (object) method2.Name) == "Microsoft.Office.Tools.CustomTaskPaneCollection.Add")
261 | assemblyInfo.Add((object) Resources.VSTO_TASKPANE);
262 | }
263 | }
264 | }
265 | catch (Exception ex)
266 | {
267 | Debug.WriteLine(ex.ToString());
268 | }
269 | }
270 | }
271 | }
272 | }
273 | catch (Exception ex)
274 | {
275 | Globals.AddException(ex);
276 | }
277 | }
278 | }
279 | }
280 |
--------------------------------------------------------------------------------
/AddInScanEngine/ComAddInUtilities.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.ComAddInUtilities
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using AddInSpy.Properties;
8 | using System;
9 | using System.Collections;
10 | using System.Reflection;
11 | using System.Runtime.InteropServices;
12 |
13 | namespace AddInSpy
14 | {
15 | internal class ComAddInUtilities
16 | {
17 | internal static NativeMethods.COMAddIn GetLoadedCOMAddInObjects(ref AddInData addInData)
18 | {
19 | addInData.IsRunning = false;
20 | addInData.IsLoaded = false;
21 | addInData.IsObjectExposed = false;
22 | object app = (object) null;
23 | NativeMethods.COMAddIn comAddIn = (NativeMethods.COMAddIn) null;
24 | addInData.IsRunning = ComAddInUtilities.GetRunningApplicationObject(addInData.HostName, out app);
25 | if (addInData.IsRunning)
26 | {
27 | addInData.IsLoaded = ComAddInUtilities.GetCOMAddIn(app, addInData.ProgId, out comAddIn);
28 | if (addInData.IsLoaded && comAddIn.Object != null)
29 | addInData.IsObjectExposed = true;
30 | }
31 | return comAddIn;
32 | }
33 |
34 | private static bool GetRunningApplicationObject(string hostName, out object app)
35 | {
36 | bool flag = false;
37 | app = (object) null;
38 | try
39 | {
40 | switch (hostName)
41 | {
42 | case "Access":
43 | app = Marshal.GetActiveObject("Access.Application");
44 | break;
45 | case "Excel":
46 | app = Marshal.GetActiveObject("Excel.Application");
47 | break;
48 | case "FrontPage":
49 | app = Marshal.GetActiveObject("FrontPage.Application");
50 | break;
51 | case "InfoPath":
52 | app = Marshal.GetActiveObject("InfoPath.Application");
53 | break;
54 | case "Outlook":
55 | app = Marshal.GetActiveObject("Outlook.Application");
56 | break;
57 | case "PowerPoint":
58 | app = Marshal.GetActiveObject("PowerPoint.Application");
59 | break;
60 | case "Project":
61 | app = Marshal.GetActiveObject("MSProject.Application");
62 | break;
63 | case "Publisher":
64 | app = Marshal.GetActiveObject("Publisher.Application");
65 | break;
66 | case "SharePoint Designer":
67 | app = Marshal.GetActiveObject("SharePointDesigner.Application");
68 | break;
69 | case "Visio":
70 | app = Marshal.GetActiveObject("Visio.Application");
71 | break;
72 | case "Word":
73 | app = Marshal.GetActiveObject("Word.Application");
74 | break;
75 | }
76 | flag = true;
77 | }
78 | catch (Exception ex)
79 | {
80 | }
81 | return flag;
82 | }
83 |
84 | private static bool GetCOMAddIn(object app, string addInProgId, out NativeMethods.COMAddIn comAddIn)
85 | {
86 | bool flag = false;
87 | comAddIn = (NativeMethods.COMAddIn) null;
88 | long num = -2147418111L;
89 | if (app != null)
90 | {
91 | Type type = app.GetType();
92 | try
93 | {
94 | NativeMethods.COMAddIns comAddIns = (NativeMethods.COMAddIns) type.InvokeMember("COMAddIns", BindingFlags.GetProperty, (Binder) null, app, (object[]) null);
95 | if (comAddIns != null)
96 | {
97 | foreach (NativeMethods.COMAddIn comAddIn1 in (IEnumerable) comAddIns)
98 | {
99 | if (comAddIn1.ProgId == addInProgId)
100 | {
101 | comAddIn = comAddIn1;
102 | if (comAddIn.Connect)
103 | {
104 | flag = true;
105 | break;
106 | }
107 | else
108 | break;
109 | }
110 | }
111 | }
112 | }
113 | catch (COMException ex)
114 | {
115 | if ((long) ex.ErrorCode == num)
116 | Globals.AddErrorMessage(Resources.RPC_E_CALL_REJECTED_MESSAGE);
117 | else
118 | Globals.AddException((Exception) ex);
119 | }
120 | }
121 | return flag;
122 | }
123 | }
124 | }
125 |
--------------------------------------------------------------------------------
/AddInScanEngine/Controller.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.Controller
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using AddInSpy.Properties;
8 | using Microsoft.Win32;
9 | using System;
10 | using System.Collections.Generic;
11 | using System.Collections.Specialized;
12 | using System.IO;
13 | using System.Net;
14 | using System.Net.NetworkInformation;
15 | using System.Windows.Input;
16 |
17 | namespace AddInSpy
18 | {
19 | public class Controller
20 | {
21 | private GridProxy gridProxy;
22 | private List progIdsFound;
23 | private bool isUncPath;
24 | private bool isHttpPath;
25 | private string[] hostNames;
26 | private bool scanHKCU;
27 | private bool scanHKLM;
28 | private bool scanRemote;
29 | private bool scanManagedInterfaces;
30 | private bool scanNativeInterfaces;
31 | private bool scanDisabled;
32 | private bool scanFormRegions;
33 | private bool reportContext;
34 | private bool reportAddIns;
35 | public string HostAddress;
36 | public string HostName;
37 | public string UserName;
38 | public string DomainName;
39 | public string OsVersion;
40 | public string VstoSuppressDisplayAlerts;
41 | public string VstoLogAlerts;
42 | private bool autoRefresh;
43 | private bool isUiMode;
44 | private string reportFileName;
45 |
46 | public GridProxy GridProxy
47 | {
48 | get
49 | {
50 | return this.gridProxy;
51 | }
52 | }
53 |
54 | public string[] HostNames
55 | {
56 | get
57 | {
58 | return this.hostNames;
59 | }
60 | set
61 | {
62 | this.hostNames = value;
63 | }
64 | }
65 |
66 | public string[] ScanNames
67 | {
68 | set
69 | {
70 | this.scanHKCU = false;
71 | this.scanHKLM = false;
72 | this.scanRemote = false;
73 | this.scanManagedInterfaces = false;
74 | this.scanNativeInterfaces = false;
75 | this.scanDisabled = false;
76 | this.scanFormRegions = false;
77 | foreach (string str in value)
78 | {
79 | if (str == Resources.SCAN_HKCU)
80 | this.scanHKCU = true;
81 | else if (str == Resources.SCAN_HKLM)
82 | this.scanHKLM = true;
83 | else if (str == Resources.SCAN_REMOTE)
84 | this.scanRemote = true;
85 | else if (str == Resources.SCAN_MANAGED_INTERFACES)
86 | this.scanManagedInterfaces = true;
87 | else if (str == Resources.SCAN_NATIVE_INTERFACES)
88 | this.scanNativeInterfaces = true;
89 | else if (str == Resources.SCAN_DISABLED_ITEMS)
90 | this.scanDisabled = true;
91 | else if (str == Resources.SCAN_FORMREGIONS)
92 | this.scanFormRegions = true;
93 | }
94 | }
95 | }
96 |
97 | public string[] ReportTypes
98 | {
99 | set
100 | {
101 | this.reportContext = false;
102 | this.reportAddIns = false;
103 | foreach (string str in value)
104 | {
105 | if (str == Resources.REPORT_CONTEXT)
106 | this.reportContext = true;
107 | else if (str == Resources.REPORT_ADDINS)
108 | this.reportAddIns = true;
109 | }
110 | }
111 | }
112 |
113 | public bool AutoRefresh
114 | {
115 | get
116 | {
117 | return this.autoRefresh;
118 | }
119 | set
120 | {
121 | this.autoRefresh = value;
122 | }
123 | }
124 |
125 | public string ReportFileName
126 | {
127 | get
128 | {
129 | return this.reportFileName;
130 | }
131 | set
132 | {
133 | this.reportFileName = value;
134 | }
135 | }
136 |
137 | public Controller(bool uiMode)
138 | {
139 | this.isUiMode = uiMode;
140 | this.gridProxy = new GridProxy();
141 | this.progIdsFound = new List();
142 | this.GetContextInformation();
143 | }
144 |
145 | public Controller(bool scanHKCU, bool scanHKLM, bool scanRemote, bool scanManagedInterfaces, bool scanNativeInterfaces, bool scanDisabled, bool scanFormRegions)
146 | : this(true)
147 | {
148 | this.scanHKCU = scanHKCU;
149 | this.scanHKLM = scanHKLM;
150 | this.scanRemote = scanRemote;
151 | this.scanManagedInterfaces = scanManagedInterfaces;
152 | this.scanNativeInterfaces = scanNativeInterfaces;
153 | this.scanDisabled = scanDisabled;
154 | this.scanFormRegions = scanFormRegions;
155 | }
156 |
157 | private void GetContextInformation()
158 | {
159 | IPGlobalProperties globalProperties = IPGlobalProperties.GetIPGlobalProperties();
160 | IPAddress[] hostAddresses = Dns.GetHostAddresses(Dns.GetHostName());
161 | NetworkInterface.GetAllNetworkInterfaces()[0].GetPhysicalAddress();
162 | this.HostAddress = hostAddresses[0].ToString();
163 | this.HostName = globalProperties.HostName;
164 | this.UserName = Environment.UserName;
165 | this.DomainName = Environment.UserDomainName;
166 | this.OsVersion = Environment.OSVersion.VersionString;
167 | string str1 = Environment.GetEnvironmentVariable("VSTO_SUPPRESSDISPLAYALERTS");
168 | if (string.IsNullOrEmpty(str1))
169 | str1 = Resources.VALUE_UNKNOWN;
170 | this.VstoSuppressDisplayAlerts = str1;
171 | string str2 = Environment.GetEnvironmentVariable("VSTO_LOGALERTS");
172 | if (string.IsNullOrEmpty(str2))
173 | str2 = Resources.VALUE_UNKNOWN;
174 | this.VstoLogAlerts = str2;
175 | }
176 |
177 | public void Refresh()
178 | {
179 | this.RefreshAddInGrid();
180 | this.GetContextInformation();
181 | }
182 |
183 | private void RefreshAddInGrid()
184 | {
185 | this.gridProxy.Clear();
186 | this.progIdsFound.Clear();
187 | object obj = (object) null;
188 | if (this.isUiMode)
189 | {
190 | obj = (object) Mouse.OverrideCursor;
191 | Mouse.OverrideCursor = Cursors.Wait;
192 | }
193 | if (this.hostNames != null)
194 | {
195 | foreach (string hostName in this.hostNames)
196 | {
197 | if (this.scanHKCU)
198 | {
199 | using (RegistryKey regHive = Registry.CurrentUser)
200 | this.EnumerateRegisteredAddIns(regHive, hostName);
201 | }
202 | if (this.scanHKLM)
203 | {
204 | using (RegistryKey regHive = Registry.LocalMachine)
205 | this.EnumerateRegisteredAddIns(regHive, hostName);
206 | }
207 | }
208 | }
209 | if (!this.isUiMode)
210 | return;
211 | Mouse.OverrideCursor = (Cursor) obj;
212 | }
213 |
214 | private void EnumerateRegisteredAddIns(RegistryKey regHive, string hostName)
215 | {
216 | string regHiveName = (string) null;
217 | List officeRegKeyNames = new List();
218 | NameValueCollection registeredFormRegions = (NameValueCollection) null;
219 | RegistryReader.GetAddInsRegHiveNames(regHive, hostName, out regHiveName, officeRegKeyNames);
220 | foreach (string officeRegKeyName in officeRegKeyNames)
221 | {
222 | EvaluateRegisteredAddIn(regHive, hostName, regHiveName, ref registeredFormRegions, officeRegKeyName);
223 | }
224 | }
225 |
226 | private void EvaluateRegisteredAddIn(RegistryKey regHive, string hostName, string regHiveName, ref NameValueCollection registeredFormRegions, string officeRegKeyName)
227 | {
228 | try
229 | {
230 | if (hostName == "Outlook" && this.scanFormRegions)
231 | registeredFormRegions = RegistryReader.ReadFormRegionRegistrations(regHive);
232 | using (RegistryKey registryKey = regHive.OpenSubKey(officeRegKeyName))
233 | {
234 | if (registryKey == null)
235 | return;
236 | foreach (string progId in registryKey.GetSubKeyNames())
237 | {
238 | bool isDllPathValid = true;
239 | NativeMethods.COMAddIn comAddIn = (NativeMethods.COMAddIn)null;
240 | bool isValidRegistration = true;
241 | this.isUncPath = false;
242 | this.isHttpPath = false;
243 | Globals.ErrorMessage = (string)null;
244 | AddInData addInData = new AddInData(hostName, regHiveName, progId);
245 | addInData.Wow6432 = registryKey.Name.Contains("Wow6432Node") ? true : false;
246 | if (this.progIdsFound.Contains(addInData.ProgId))
247 | addInData.StatusDescription = Resources.REGISTERED_MULTIPLE_TIMES;
248 | else
249 | this.progIdsFound.Add(addInData.ProgId);
250 | try
251 | {
252 | using (RegistryKey addInKey = registryKey.OpenSubKey(addInData.ProgId))
253 | {
254 | if (addInKey != null)
255 | addInData.GetData(addInKey, this.scanManagedInterfaces, this.scanNativeInterfaces, this.scanRemote, ref this.isUncPath, ref this.isHttpPath, ref isDllPathValid, ref isValidRegistration);
256 | else
257 | addInData.SetInvalidAddInKey();
258 | if (isValidRegistration)
259 | {
260 | comAddIn = ComAddInUtilities.GetLoadedCOMAddInObjects(ref addInData);
261 | if (this.isHttpPath)
262 | addInData.StatusDescription = Resources.HTTP_PARTIAL_INFORMATION;
263 | else if (!this.scanRemote && this.isUncPath)
264 | addInData.StatusDescription = Resources.REMOTE_NOT_SELECTED;
265 | else if (addInData.AssemblyPath != null && isDllPathValid)
266 | addInData.InstallDate = this.GetAddInInstallDate(addInData.AssemblyPath);
267 | else
268 | addInData.SetInvalidPath();
269 | if (addInData.AssemblyPath != null && addInData.AssemblyPath.EndsWith(".deploy"))
270 | addInData.AssemblyPath = addInData.AssemblyPath.Substring(0, addInData.AssemblyPath.IndexOf(".deploy"));
271 | }
272 | }
273 | }
274 | catch (Exception ex)
275 | {
276 | Globals.AddException(ex);
277 | }
278 | if (Globals.ErrorMessage != null && Globals.ErrorMessage.Length > 0)
279 | addInData.StatusDescription = !string.IsNullOrEmpty(addInData.StatusDescription) ? string.Format("{0} {1}", (object)addInData.StatusDescription, (object)Globals.ErrorMessage) : Globals.ErrorMessage;
280 | if (this.scanDisabled)
281 | addInData.ScanForDisabledItems();
282 | if (addInData.HostName == "Outlook" && this.scanFormRegions)
283 | addInData.ScanForFormRegions(registeredFormRegions);
284 | this.gridProxy.AddDataRow(addInData);
285 | }
286 | }
287 | return;
288 | }
289 | catch (Exception ex)
290 | {
291 | Globals.AddException(ex);
292 | return;
293 | }
294 | }
295 |
296 | private string GetAddInInstallDate(string assemblyPath)
297 | {
298 | string str = (string) null;
299 | if (assemblyPath != null)
300 | {
301 | try
302 | {
303 | DateTime creationTime = Directory.GetCreationTime(Path.GetDirectoryName(assemblyPath));
304 | str = creationTime.ToShortDateString() + " - " + creationTime.ToLongTimeString();
305 | }
306 | catch (Exception ex)
307 | {
308 | Globals.AddException(ex);
309 | }
310 | }
311 | return str;
312 | }
313 |
314 | public void GenerateReport(bool reportContext, bool reportAddIns, string reportFileName)
315 | {
316 | new ReportWriter(this.gridProxy.AddInDataTable, this.HostAddress, this.HostName, this.UserName, this.DomainName, this.OsVersion, this.VstoSuppressDisplayAlerts, this.VstoLogAlerts).GenerateReport(reportContext, reportAddIns, reportFileName);
317 | }
318 |
319 | public void GenerateReport()
320 | {
321 | new ReportWriter(this.gridProxy.AddInDataTable, this.HostAddress, this.HostName, this.UserName, this.DomainName, this.OsVersion, this.VstoSuppressDisplayAlerts, this.VstoLogAlerts).GenerateReport(this.reportContext, this.reportAddIns, this.reportFileName);
322 | }
323 | }
324 | }
325 |
--------------------------------------------------------------------------------
/AddInScanEngine/GacEnumerator.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.GacEnumerator
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using AddInSpy.Properties;
8 | using System;
9 | using System.Text;
10 |
11 | namespace AddInSpy
12 | {
13 | internal class GacEnumerator
14 | {
15 | private NativeMethods.IAssemblyEnum assemblyEnum = (NativeMethods.IAssemblyEnum) null;
16 | private bool done;
17 |
18 | public GacEnumerator(string assemblyName)
19 | {
20 | NativeMethods.IAssemblyName ppAssemblyNameObj = (NativeMethods.IAssemblyName) null;
21 | if (assemblyName == null)
22 | return;
23 | NativeMethods.CreateAssemblyNameObject(out ppAssemblyNameObj, assemblyName, NativeMethods.CreateAssemblyNameObjectFlags.CANOF_PARSE_DISPLAY_NAME, IntPtr.Zero);
24 | NativeMethods.CreateAssemblyEnum(out this.assemblyEnum, IntPtr.Zero, ppAssemblyNameObj, NativeMethods.AssemblyCacheFlags.GAC, IntPtr.Zero);
25 | }
26 |
27 | public static string QueryAssemblyInfo(string assemblyName)
28 | {
29 | if (assemblyName == null)
30 | throw new ArgumentException(Resources.INVALID_ASSEMBLYNAME, "assemblyName");
31 | NativeMethods.AssemblyInfo assemblyInfo = new NativeMethods.AssemblyInfo();
32 | assemblyInfo.cchBuf = 1024;
33 | assemblyInfo.currentAssemblyPath = new string(char.MinValue, assemblyInfo.cchBuf);
34 | NativeMethods.IAssemblyCache ppAsmCache = (NativeMethods.IAssemblyCache) null;
35 | NativeMethods.CreateAssemblyCache(out ppAsmCache, 0);
36 | ppAsmCache.QueryAssemblyInfo(0, assemblyName, ref assemblyInfo);
37 | return assemblyInfo.currentAssemblyPath;
38 | }
39 |
40 | public string GetNextAssembly()
41 | {
42 | NativeMethods.IAssemblyName ppName = (NativeMethods.IAssemblyName) null;
43 | if (this.done)
44 | return (string) null;
45 | this.assemblyEnum.GetNextAssembly((IntPtr) 0, out ppName, 0);
46 | if (ppName != null)
47 | {
48 | int pccDisplayName = 1024;
49 | StringBuilder pDisplayName = new StringBuilder(pccDisplayName);
50 | ppName.GetDisplayName(pDisplayName, ref pccDisplayName, 167);
51 | return ((object) pDisplayName).ToString();
52 | }
53 | else
54 | {
55 | this.done = true;
56 | return (string) null;
57 | }
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/AddInScanEngine/Globals.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.Globals
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using System;
8 |
9 | namespace AddInSpy
10 | {
11 | internal class Globals
12 | {
13 | private static string errorMessage = (string) null;
14 |
15 | internal static string ErrorMessage
16 | {
17 | get
18 | {
19 | return Globals.errorMessage;
20 | }
21 | set
22 | {
23 | Globals.errorMessage = value;
24 | }
25 | }
26 |
27 | private Globals()
28 | {
29 | }
30 |
31 | internal static void AddErrorMessage(string newMessage)
32 | {
33 | if (Globals.errorMessage == null || Globals.errorMessage.Length == 0)
34 | Globals.errorMessage = newMessage;
35 | else
36 | Globals.errorMessage = string.Format("{0} {1}", (object) Globals.errorMessage, (object) newMessage);
37 | }
38 |
39 | internal static void AddException(Exception ex)
40 | {
41 | Globals.AddErrorMessage(ex.ToString());
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/AddInScanEngine/GridProxy.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.GridProxy
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using AddInSpy.Properties;
8 | using System.Data;
9 | using System.Drawing;
10 |
11 | namespace AddInSpy
12 | {
13 | public class GridProxy
14 | {
15 | private int item = 1;
16 | private DataTable dataTable;
17 |
18 | public DataTable AddInDataTable
19 | {
20 | get
21 | {
22 | return this.dataTable;
23 | }
24 | }
25 |
26 | public int AddInCount
27 | {
28 | get
29 | {
30 | return this.dataTable.Rows.Count;
31 | }
32 | }
33 |
34 | public GridProxy()
35 | {
36 | this.InitializeDataColumns();
37 | }
38 |
39 | private void InitializeDataColumns()
40 | {
41 | this.dataTable = new DataTable();
42 | this.dataTable.Columns.Add("Item", typeof (int));
43 | this.dataTable.Columns.Add("Host");
44 | this.dataTable.Columns.Add("Running", typeof (bool));
45 | this.dataTable.Columns.Add("Loaded", typeof (bool));
46 | this.dataTable.Columns.Add("Type");
47 | this.dataTable.Columns.Add("FriendlyName");
48 | this.dataTable.Columns.Add("ProgID");
49 | this.dataTable.Columns.Add("CLSID");
50 | this.dataTable.Columns.Add("Manifest");
51 | this.dataTable.Columns.Add("DllPath");
52 | this.dataTable.Columns.Add("LoadBehavior");
53 | this.dataTable.Columns.Add("RegHive");
54 | this.dataTable.Columns.Add("Wow6432", typeof (bool));
55 | this.dataTable.Columns.Add("AssemblyName");
56 | this.dataTable.Columns.Add("CLR_version");
57 | this.dataTable.Columns.Add("Exposed", typeof (bool));
58 | this.dataTable.Columns.Add("Interfaces");
59 | this.dataTable.Columns.Add("FormRegions");
60 | this.dataTable.Columns.Add("VSTOR");
61 | this.dataTable.Columns.Add("Installed");
62 | this.dataTable.Columns.Add("PubVer");
63 | this.dataTable.Columns.Add("Status2", typeof (Bitmap));
64 | this.dataTable.Columns.Add("Status", typeof (bool));
65 | this.dataTable.Columns.Add("StatusDescription");
66 | }
67 |
68 | public void Clear()
69 | {
70 | this.item = 1;
71 | this.dataTable.Rows.Clear();
72 | }
73 |
74 | public void AddDataRow(AddInData addInData)
75 | {
76 | addInData.SetUnknownValues();
77 | if (!string.IsNullOrEmpty(addInData.StatusDescription))
78 | addInData.StatusImage = Resources.WarningImage;
79 | this.dataTable.Rows.Add(
80 | (object) this.item,
81 | (object) addInData.HostName,
82 | (object) addInData.IsRunning,
83 | (object) addInData.IsLoaded,
84 | (object) addInData.AddInType,
85 | (object) addInData.FriendlyName,
86 | (object) addInData.ProgId,
87 | (object) addInData.Clsid,
88 | (object) addInData.ManifestPath,
89 | (object) addInData.AssemblyPath,
90 | (object) addInData.LoadBehavior,
91 | (object) addInData.RegHiveName,
92 | (object) addInData.Wow6432,
93 | (object) addInData.AssemblyName,
94 | (object) addInData.ClrVersion,
95 | (object) addInData.IsObjectExposed,
96 | (object) addInData.SupportedInterfaces,
97 | (object) addInData.OutlookFormRegions,
98 | (object) addInData.VstoRuntime,
99 | (object) addInData.InstallDate,
100 | (object) addInData.AssemblyVersion,
101 | (object) addInData.StatusImage,
102 | (object) addInData.Status,
103 | (object) addInData.StatusDescription
104 | );
105 | ++this.item;
106 | }
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/AddInScanEngine/IAddInGridControl.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.IAddInGridControl
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using System.Windows.Forms;
8 |
9 | namespace AddInSpy
10 | {
11 | public interface IAddInGridControl
12 | {
13 | DataGridView AddInGrid { get; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/AddInScanEngine/ILReader.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.ILReader
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using System;
8 | using System.Collections;
9 | using System.Collections.Generic;
10 | using System.Reflection;
11 | using System.Reflection.Emit;
12 |
13 | namespace AddInSpy
14 | {
15 | internal class ILReader : IEnumerable, IEnumerable
16 | {
17 | private static OpCode[] OneByteOpCodes = new OpCode[256];
18 | private static OpCode[] TwoByteOpCodes = new OpCode[256];
19 | private int position;
20 | private ModuleScopeTokenResolver resolver;
21 | private byte[] byteArray;
22 | private MethodBase methodBase;
23 |
24 | static ILReader()
25 | {
26 | foreach (FieldInfo fieldInfo in typeof (OpCodes).GetFields(BindingFlags.Static | BindingFlags.Public))
27 | {
28 | OpCode opCode = (OpCode) fieldInfo.GetValue((object) null);
29 | ushort num = (ushort) opCode.Value;
30 | if ((int) num < 256)
31 | ILReader.OneByteOpCodes[(int) num] = opCode;
32 | else if (((int) num & 65280) == 65024)
33 | ILReader.TwoByteOpCodes[(int) num & (int) byte.MaxValue] = opCode;
34 | }
35 | }
36 |
37 | public ILReader(MethodBase method)
38 | {
39 | if (method == null)
40 | throw new ArgumentNullException("method == null");
41 | this.methodBase = method;
42 | this.resolver = new ModuleScopeTokenResolver(method);
43 | MethodBody methodBody = this.methodBase.GetMethodBody();
44 | this.byteArray = methodBody == null ? new byte[0] : methodBody.GetILAsByteArray();
45 | this.position = 0;
46 | }
47 |
48 | public IEnumerator GetEnumerator()
49 | {
50 | while (this.position < this.byteArray.Length)
51 | yield return this.Next();
52 | this.position = 0;
53 | }
54 |
55 | IEnumerator IEnumerable.GetEnumerator()
56 | {
57 | return (IEnumerator) this.GetEnumerator();
58 | }
59 |
60 | private MethodInstruction Next()
61 | {
62 | int offset = this.position;
63 | OpCode opCode1 = OpCodes.Nop;
64 | byte num1 = this.byteArray[this.position++];
65 | OpCode opCode2;
66 | if ((int) num1 != 254)
67 | {
68 | opCode2 = ILReader.OneByteOpCodes[(int) num1];
69 | }
70 | else
71 | {
72 | byte num2 = this.byteArray[this.position++];
73 | opCode2 = ILReader.TwoByteOpCodes[(int) num2];
74 | }
75 | if (opCode2.OperandType != OperandType.InlineMethod)
76 | return (MethodInstruction) null;
77 | int startIndex = this.position;
78 | this.position += 4;
79 | int token = BitConverter.ToInt32(this.byteArray, startIndex);
80 | return new MethodInstruction(offset, opCode2, token, this.resolver);
81 | }
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/AddInScanEngine/ManifestReader.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.ManifestReader
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using AddInSpy.Properties;
8 | using System;
9 | using System.IO;
10 | using System.Net;
11 | using System.Text;
12 | using System.Xml;
13 |
14 | namespace AddInSpy
15 | {
16 | internal class ManifestReader
17 | {
18 | internal static string[] GetClickOnceInfo(ref string manifestPath, bool scanRemote, ref bool isUncPath, ref bool isHttpPath)
19 | {
20 | string[] strArray = new string[2];
21 | string str1 = string.Empty;
22 | string baseDir = string.Empty;
23 | string str2 = string.Empty;
24 | XmlDocument deployDoc = new XmlDocument();
25 | if (manifestPath == null || manifestPath.Length == 0)
26 | throw new ArgumentException(Resources.EMPTY_MANIFESTPATH);
27 | try
28 | {
29 | Uri uri = new Uri(manifestPath);
30 | bool flag;
31 | if (uri.IsLoopback)
32 | flag = ManifestReader.GetManifestFromLocalPath(deployDoc, ref manifestPath, out baseDir);
33 | else if (uri.IsUnc)
34 | {
35 | isUncPath = true;
36 | flag = scanRemote && ManifestReader.GetManifestFromUncPath(deployDoc, ref manifestPath, out baseDir);
37 | }
38 | else if (uri.Host != null && uri.Host.Length > 0)
39 | {
40 | isHttpPath = true;
41 | flag = scanRemote && ManifestReader.GetManifestFromHttpUrlPath(manifestPath, deployDoc, out baseDir);
42 | }
43 | else
44 | flag = false;
45 | if (flag)
46 | {
47 | XmlNamespaceManager nsmgr = new XmlNamespaceManager(deployDoc.NameTable);
48 | nsmgr.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1");
49 | nsmgr.AddNamespace("def", "urn:schemas-microsoft-com:asm.v2");
50 | XmlNode xmlNode1 = (XmlNode) deployDoc.DocumentElement;
51 | XmlNode xmlNode2 = xmlNode1.SelectSingleNode("/asmv1:assembly/def:dependency/def:dependentAssembly", nsmgr);
52 | XmlNode xmlNode3 = xmlNode1.SelectSingleNode("/asmv1:assembly/def:dependency/def:dependentAssembly/def:assemblyIdentity", nsmgr);
53 | string path2_1 = xmlNode2.Attributes["codebase"].Value;
54 | string path2_2 = xmlNode3.Attributes["name"].Value;
55 | str2 = xmlNode3.Attributes["version"].Value;
56 | if (isHttpPath)
57 | {
58 | string str3 = (baseDir + path2_1).Replace("\\", "/");
59 | str1 = str3.Substring(0, str3.LastIndexOf(".manifest")) + ".deploy";
60 | }
61 | else
62 | str1 = Path.Combine(Path.GetDirectoryName(Path.Combine(baseDir, path2_1)), path2_2) + ".deploy";
63 | }
64 | else
65 | {
66 | str1 = (string) null;
67 | str2 = (string) null;
68 | }
69 | }
70 | catch (Exception ex)
71 | {
72 | Globals.AddException(ex);
73 | }
74 | strArray[0] = str1;
75 | strArray[1] = str2;
76 | return strArray;
77 | }
78 |
79 | private static bool GetManifestFromLocalPath(XmlDocument deployDoc, ref string manifestPath, out string baseDir)
80 | {
81 | bool flag = true;
82 | string uriString = manifestPath.Substring("file:///".Length);
83 | manifestPath = new Uri(uriString).LocalPath;
84 | baseDir = Path.GetDirectoryName(manifestPath);
85 | if (System.IO.File.Exists(manifestPath))
86 | deployDoc.Load(manifestPath);
87 | else
88 | flag = false;
89 | return flag;
90 | }
91 |
92 | private static bool GetManifestFromUncPath(XmlDocument deployDoc, ref string manifestPath, out string baseDir)
93 | {
94 | bool flag = true;
95 | string uriString = manifestPath.Substring("file:".Length);
96 | manifestPath = new Uri(uriString).LocalPath;
97 | string str = Path.GetFileName(manifestPath);
98 | try
99 | {
100 | str = Path.Combine(Path.GetTempPath(), str);
101 | System.IO.File.Copy(manifestPath, str, true);
102 | }
103 | catch (Exception ex)
104 | {
105 | flag = false;
106 | }
107 | baseDir = Path.GetDirectoryName(manifestPath);
108 | deployDoc.Load(str);
109 | return flag;
110 | }
111 |
112 | private static bool GetManifestFromHttpUrlPath(string manifestPath, XmlDocument deployDoc, out string baseDir)
113 | {
114 | bool flag = true;
115 | try
116 | {
117 | HttpWebRequest httpWebRequest = (HttpWebRequest) WebRequest.Create(manifestPath);
118 | httpWebRequest.Credentials = CredentialCache.DefaultCredentials;
119 | HttpWebResponse httpWebResponse = (HttpWebResponse) httpWebRequest.GetResponse();
120 | StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.UTF8);
121 | deployDoc.LoadXml(streamReader.ReadToEnd());
122 | httpWebResponse.Close();
123 | streamReader.Close();
124 | }
125 | catch (Exception ex)
126 | {
127 | flag = false;
128 | }
129 | baseDir = manifestPath.Substring(0, manifestPath.LastIndexOf('/') + 1);
130 | return flag;
131 | }
132 | }
133 | }
134 |
--------------------------------------------------------------------------------
/AddInScanEngine/MethodInstruction.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.MethodInstruction
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using System.Reflection;
8 | using System.Reflection.Emit;
9 |
10 | namespace AddInSpy
11 | {
12 | internal class MethodInstruction
13 | {
14 | private ModuleScopeTokenResolver resolver;
15 | private MethodBase method;
16 | private int offset;
17 | private OpCode opCode;
18 | private int token;
19 |
20 | public int Offset
21 | {
22 | get
23 | {
24 | return this.offset;
25 | }
26 | }
27 |
28 | public OpCode OpCode
29 | {
30 | get
31 | {
32 | return this.opCode;
33 | }
34 | }
35 |
36 | public int Token
37 | {
38 | get
39 | {
40 | return this.token;
41 | }
42 | }
43 |
44 | public MethodBase Method
45 | {
46 | get
47 | {
48 | if (this.method == null)
49 | this.method = this.resolver.ResolveTokenAsMethod(this.token);
50 | return this.method;
51 | }
52 | }
53 |
54 | internal MethodInstruction(int offset, OpCode opCode, int token, ModuleScopeTokenResolver resolver)
55 | {
56 | this.offset = offset;
57 | this.opCode = opCode;
58 | this.resolver = resolver;
59 | this.token = token;
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/AddInScanEngine/ModuleScopeTokenResolver.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.ModuleScopeTokenResolver
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using System;
8 | using System.Reflection;
9 |
10 | namespace AddInSpy
11 | {
12 | internal class ModuleScopeTokenResolver
13 | {
14 | private Module module;
15 | private Type[] methodContext;
16 | private Type[] typeContext;
17 |
18 | public ModuleScopeTokenResolver(MethodBase method)
19 | {
20 | this.module = method.Module;
21 | this.methodContext = method is ConstructorInfo ? (Type[]) null : method.GetGenericArguments();
22 | this.typeContext = method.DeclaringType == null ? (Type[]) null : method.DeclaringType.GetGenericArguments();
23 | }
24 |
25 | public MethodBase ResolveTokenAsMethod(int token)
26 | {
27 | MethodBase methodBase = (MethodBase) null;
28 | try
29 | {
30 | methodBase = this.module.ResolveMethod(token, this.typeContext, this.methodContext);
31 | }
32 | catch (Exception ex)
33 | {
34 | }
35 | return methodBase;
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/AddInScanEngine/NativeAddInScanner.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.NativeAddInScanner
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using AddInSpy.Properties;
8 | using System;
9 | using System.Collections.Generic;
10 | using System.IO;
11 | using System.Runtime.InteropServices;
12 | using System.Text;
13 |
14 | namespace AddInSpy
15 | {
16 | internal class NativeAddInScanner
17 | {
18 | private SecondaryExtensibility secondaryExtensibility;
19 |
20 | internal SecondaryExtensibility SecondaryExtensibility
21 | {
22 | get
23 | {
24 | return this.secondaryExtensibility;
25 | }
26 | }
27 |
28 | public NativeAddInScanner(string hostName)
29 | {
30 | this.secondaryExtensibility = new SecondaryExtensibility(hostName);
31 | }
32 |
33 | internal string GetSupportedInterfaces(string guid)
34 | {
35 | string str = (string) null;
36 | List list = new List();
37 | IntPtr pUnk = IntPtr.Zero;
38 | IntPtr ppv = IntPtr.Zero;
39 | if (guid == "{5B7AB748-6D2E-4827-90A5-32B426DC61B7}" || guid == "{EFEF7FDB-0CED-4FB6-B3BB-3C50D39F4120}" || guid == "{F959DBBB-3867-41F2-8E5F-3B8BEFAA81B3}")
40 | {
41 | Globals.AddErrorMessage(Resources.PROBLEM_OUTLOOK_ADDIN);
42 | return str;
43 | }
44 | else
45 | {
46 | try
47 | {
48 | pUnk = Marshal.GetIUnknownForObject(Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(guid), true)));
49 | foreach (KeyValuePair keyValuePair in (IEnumerable>) this.secondaryExtensibility.AddInInterfaces)
50 | {
51 | Guid iid = keyValuePair.Value;
52 | if (Marshal.QueryInterface(pUnk, ref iid, out ppv) >= 0 && ppv != IntPtr.Zero)
53 | {
54 | list.Add(keyValuePair.Key);
55 | Marshal.Release(ppv);
56 | ppv = IntPtr.Zero;
57 | }
58 | }
59 | if (list.Count > 0)
60 | {
61 | StringBuilder stringBuilder = new StringBuilder();
62 | for (int index = 0; index < list.Count; ++index)
63 | {
64 | stringBuilder.Append(list[index]);
65 | if (index + 1 < list.Count)
66 | stringBuilder.Append(", ");
67 | }
68 | str = ((object) stringBuilder).ToString();
69 | }
70 | else
71 | str = Resources.SECONDARY_INTERFACES_NONE;
72 | }
73 | catch (FileNotFoundException ex)
74 | {
75 | Globals.AddException((Exception) ex);
76 | }
77 | catch (Exception ex)
78 | {
79 | Globals.AddException(ex);
80 | }
81 | finally
82 | {
83 | if (ppv != IntPtr.Zero)
84 | Marshal.Release(ppv);
85 | if (pUnk != IntPtr.Zero)
86 | Marshal.Release(pUnk);
87 | }
88 | return str;
89 | }
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/AddInScanEngine/NativeMethods.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.NativeMethods
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using System;
8 | using System.Collections;
9 | using System.Runtime.CompilerServices;
10 | using System.Runtime.InteropServices;
11 | using System.Text;
12 |
13 | namespace AddInSpy
14 | {
15 | internal static class NativeMethods
16 | {
17 | [DllImport("fusion.dll", PreserveSig = false)]
18 | internal static extern int CreateAssemblyCache(out NativeMethods.IAssemblyCache ppAsmCache, int reserved);
19 |
20 | [DllImport("fusion.dll", PreserveSig = false)]
21 | internal static extern int CreateAssemblyNameObject(out NativeMethods.IAssemblyName ppAssemblyNameObj, [MarshalAs(UnmanagedType.LPWStr)] string szAssemblyName, NativeMethods.CreateAssemblyNameObjectFlags flags, IntPtr pvReserved);
22 |
23 | [DllImport("fusion.dll", PreserveSig = false)]
24 | internal static extern int CreateAssemblyEnum(out NativeMethods.IAssemblyEnum ppEnum, IntPtr pUnkReserved, NativeMethods.IAssemblyName pName, NativeMethods.AssemblyCacheFlags flags, IntPtr pvReserved);
25 |
26 | [Flags]
27 | internal enum AssemblyCacheFlags
28 | {
29 | GAC = 2,
30 | }
31 |
32 | internal enum CreateAssemblyNameObjectFlags
33 | {
34 | CANOF_PARSE_DISPLAY_NAME = 1,
35 | }
36 |
37 | [Flags]
38 | internal enum AssemblyNameDisplayFlags
39 | {
40 | VERSION = 1,
41 | CULTURE = 2,
42 | PUBLIC_KEY_TOKEN = 4,
43 | PROCESSORARCHITECTURE = 32,
44 | RETARGETABLE = 128,
45 | ALL = RETARGETABLE | PROCESSORARCHITECTURE | PUBLIC_KEY_TOKEN | CULTURE | VERSION,
46 | }
47 |
48 | [Guid("e707dcde-d1cd-11d2-bab9-00c04f8eceae")]
49 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
50 | [ComImport]
51 | internal interface IAssemblyCache
52 | {
53 | [SpecialName]
54 | void _VtblGap1_1();
55 |
56 | void QueryAssemblyInfo(int flags, [MarshalAs(UnmanagedType.LPWStr)] string assemblyName, ref NativeMethods.AssemblyInfo assemblyInfo);
57 |
58 | [SpecialName]
59 | void _VtblGap3_3();
60 | }
61 |
62 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
63 | [Guid("CD193BC0-B4BC-11d2-9833-00C04FC31D2E")]
64 | [ComImport]
65 | internal interface IAssemblyName
66 | {
67 | [SpecialName]
68 | void _VtblGap1_2();
69 |
70 | void Finalize();
71 |
72 | void GetDisplayName(StringBuilder pDisplayName, ref int pccDisplayName, int displayFlags);
73 |
74 | [SpecialName]
75 | void _VtblGap5_5();
76 | }
77 |
78 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
79 | [Guid("21b8916c-f28e-11d2-a473-00c04f8ef448")]
80 | [ComImport]
81 | internal interface IAssemblyEnum
82 | {
83 | void GetNextAssembly(IntPtr pvReserved, out NativeMethods.IAssemblyName ppName, int flags);
84 |
85 | [SpecialName]
86 | void _VtblGap2_2();
87 | }
88 |
89 | internal struct AssemblyInfo
90 | {
91 | public int cbAssemblyInfo;
92 | public int assemblyFlags;
93 | public long assemblySizeInKB;
94 | [MarshalAs(UnmanagedType.LPWStr)]
95 | public string currentAssemblyPath;
96 | public int cchBuf;
97 | }
98 |
99 | [Guid("000C0339-0000-0000-C000-000000000046")]
100 | [TypeLibType((short) 4288)]
101 | [ComImport]
102 | public interface COMAddIns : IEnumerable
103 | {
104 | [DispId(1610743808)]
105 | object Application { [DispId(1610743808), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; }
106 |
107 | [DispId(1610743809)]
108 | int Creator { [DispId(1610743809), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; }
109 |
110 | [DispId(1)]
111 | int Count { [DispId(1), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; }
112 |
113 | [DispId(3)]
114 | object Parent { [DispId(3), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; }
115 |
116 | [DispId(0)]
117 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
118 | [return: MarshalAs(UnmanagedType.Interface)]
119 | NativeMethods.COMAddIn Item([MarshalAs(UnmanagedType.Struct), In] ref object Index);
120 |
121 | [SpecialName]
122 | void _VtblGap4_1();
123 |
124 | [DispId(2)]
125 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
126 | void Update();
127 |
128 | [DispId(4)]
129 | [TypeLibFunc((short) 1088)]
130 | [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
131 | void SetAppModal([In] bool varfModal);
132 | }
133 |
134 | [Guid("000C033A-0000-0000-C000-000000000046")]
135 | [TypeLibType((short) 4288)]
136 | [ComImport]
137 | public interface COMAddIn
138 | {
139 | [DispId(1610743808)]
140 | object Application { [DispId(1610743808), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; }
141 |
142 | [DispId(1610743809)]
143 | int Creator { [DispId(1610743809), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; }
144 |
145 | [DispId(0)]
146 | //[IndexerName("Description")]
147 | string Description { [DispId(0), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; [DispId(0), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] set; }
148 |
149 | [DispId(3)]
150 | string ProgId { [DispId(3), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; }
151 |
152 | [DispId(4)]
153 | string Guid { [DispId(4), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; }
154 |
155 | [DispId(6)]
156 | bool Connect { [DispId(6), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; [DispId(6), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] set; }
157 |
158 | [DispId(7)]
159 | object Object { [DispId(7), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; [DispId(7), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] set; }
160 |
161 | [DispId(8)]
162 | object Parent { [DispId(8), MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] get; }
163 | }
164 | }
165 | }
166 |
--------------------------------------------------------------------------------
/AddInScanEngine/Properties/Resources.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.Properties.Resources
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using System.CodeDom.Compiler;
8 | using System.ComponentModel;
9 | using System.Diagnostics;
10 | using System.Drawing;
11 | using System.Globalization;
12 | using System.Resources;
13 | using System.Runtime.CompilerServices;
14 |
15 | namespace AddInSpy.Properties
16 | {
17 | [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
18 | [DebuggerNonUserCode]
19 | [CompilerGenerated]
20 | internal class Resources
21 | {
22 | private static ResourceManager resourceMan;
23 | private static CultureInfo resourceCulture;
24 |
25 | [EditorBrowsable(EditorBrowsableState.Advanced)]
26 | internal static ResourceManager ResourceManager
27 | {
28 | get
29 | {
30 | if (object.ReferenceEquals((object) Resources.resourceMan, (object) null))
31 | Resources.resourceMan = new ResourceManager("AddInSpy.Properties.Resources", typeof (Resources).Assembly);
32 | return Resources.resourceMan;
33 | }
34 | }
35 |
36 | [EditorBrowsable(EditorBrowsableState.Advanced)]
37 | internal static CultureInfo Culture
38 | {
39 | get
40 | {
41 | return Resources.resourceCulture;
42 | }
43 | set
44 | {
45 | Resources.resourceCulture = value;
46 | }
47 | }
48 |
49 | internal static string ADDIN_DISABLED
50 | {
51 | get
52 | {
53 | return Resources.ResourceManager.GetString("ADDIN_DISABLED", Resources.resourceCulture);
54 | }
55 | }
56 |
57 | internal static string ADDIN_TYPE_MANAGED
58 | {
59 | get
60 | {
61 | return Resources.ResourceManager.GetString("ADDIN_TYPE_MANAGED", Resources.resourceCulture);
62 | }
63 | }
64 |
65 | internal static string ADDIN_TYPE_NATIVE
66 | {
67 | get
68 | {
69 | return Resources.ResourceManager.GetString("ADDIN_TYPE_NATIVE", Resources.resourceCulture);
70 | }
71 | }
72 |
73 | internal static string ADDIN_TYPE_VSTO
74 | {
75 | get
76 | {
77 | return Resources.ResourceManager.GetString("ADDIN_TYPE_VSTO", Resources.resourceCulture);
78 | }
79 | }
80 |
81 | internal static string CONTEXT_ADDIN_EMPTY
82 | {
83 | get
84 | {
85 | return Resources.ResourceManager.GetString("CONTEXT_ADDIN_EMPTY", Resources.resourceCulture);
86 | }
87 | }
88 |
89 | internal static string EMPTY_MANIFESTPATH
90 | {
91 | get
92 | {
93 | return Resources.ResourceManager.GetString("EMPTY_MANIFESTPATH", Resources.resourceCulture);
94 | }
95 | }
96 |
97 | internal static string HTTP_PARTIAL_INFORMATION
98 | {
99 | get
100 | {
101 | return Resources.ResourceManager.GetString("HTTP_PARTIAL_INFORMATION", Resources.resourceCulture);
102 | }
103 | }
104 |
105 | internal static string INVALID_ASSEMBLYNAME
106 | {
107 | get
108 | {
109 | return Resources.ResourceManager.GetString("INVALID_ASSEMBLYNAME", Resources.resourceCulture);
110 | }
111 | }
112 |
113 | internal static string MESSAGECLASS_FORMREGION
114 | {
115 | get
116 | {
117 | return Resources.ResourceManager.GetString("MESSAGECLASS_FORMREGION", Resources.resourceCulture);
118 | }
119 | }
120 |
121 | internal static string NATIVE_SCAN_FAILED
122 | {
123 | get
124 | {
125 | return Resources.ResourceManager.GetString("NATIVE_SCAN_FAILED", Resources.resourceCulture);
126 | }
127 | }
128 |
129 | internal static string NOT_APPLICABLE
130 | {
131 | get
132 | {
133 | return Resources.ResourceManager.GetString("NOT_APPLICABLE", Resources.resourceCulture);
134 | }
135 | }
136 |
137 | internal static Bitmap OkImage
138 | {
139 | get
140 | {
141 | return (Bitmap) Resources.ResourceManager.GetObject("OkImage", Resources.resourceCulture);
142 | }
143 | }
144 |
145 | internal static string PATH_INVALID
146 | {
147 | get
148 | {
149 | return Resources.ResourceManager.GetString("PATH_INVALID", Resources.resourceCulture);
150 | }
151 | }
152 |
153 | internal static string PROBLEM_OUTLOOK_ADDIN
154 | {
155 | get
156 | {
157 | return Resources.ResourceManager.GetString("PROBLEM_OUTLOOK_ADDIN", Resources.resourceCulture);
158 | }
159 | }
160 |
161 | internal static string REGISTERED_MULTIPLE_TIMES
162 | {
163 | get
164 | {
165 | return Resources.ResourceManager.GetString("REGISTERED_MULTIPLE_TIMES", Resources.resourceCulture);
166 | }
167 | }
168 |
169 | internal static string REGISTRATION_INVALID
170 | {
171 | get
172 | {
173 | return Resources.ResourceManager.GetString("REGISTRATION_INVALID", Resources.resourceCulture);
174 | }
175 | }
176 |
177 | internal static string REMOTE_NOT_SELECTED
178 | {
179 | get
180 | {
181 | return Resources.ResourceManager.GetString("REMOTE_NOT_SELECTED", Resources.resourceCulture);
182 | }
183 | }
184 |
185 | internal static string REPORT_ADDINS
186 | {
187 | get
188 | {
189 | return Resources.ResourceManager.GetString("REPORT_ADDINS", Resources.resourceCulture);
190 | }
191 | }
192 |
193 | internal static string REPORT_CONTEXT
194 | {
195 | get
196 | {
197 | return Resources.ResourceManager.GetString("REPORT_CONTEXT", Resources.resourceCulture);
198 | }
199 | }
200 |
201 | internal static string REPORT_ELEMENT_ADDINS
202 | {
203 | get
204 | {
205 | return Resources.ResourceManager.GetString("REPORT_ELEMENT_ADDINS", Resources.resourceCulture);
206 | }
207 | }
208 |
209 | internal static string REPORT_ELEMENT_CONTEXT
210 | {
211 | get
212 | {
213 | return Resources.ResourceManager.GetString("REPORT_ELEMENT_CONTEXT", Resources.resourceCulture);
214 | }
215 | }
216 |
217 | internal static string REPORT_ELEMENT_DOMAINNAME
218 | {
219 | get
220 | {
221 | return Resources.ResourceManager.GetString("REPORT_ELEMENT_DOMAINNAME", Resources.resourceCulture);
222 | }
223 | }
224 |
225 | internal static string REPORT_ELEMENT_IPADDRESS
226 | {
227 | get
228 | {
229 | return Resources.ResourceManager.GetString("REPORT_ELEMENT_IPADDRESS", Resources.resourceCulture);
230 | }
231 | }
232 |
233 | internal static string REPORT_ELEMENT_MACHINE
234 | {
235 | get
236 | {
237 | return Resources.ResourceManager.GetString("REPORT_ELEMENT_MACHINE", Resources.resourceCulture);
238 | }
239 | }
240 |
241 | internal static string REPORT_ELEMENT_OS
242 | {
243 | get
244 | {
245 | return Resources.ResourceManager.GetString("REPORT_ELEMENT_OS", Resources.resourceCulture);
246 | }
247 | }
248 |
249 | internal static string REPORT_ELEMENT_REPORT
250 | {
251 | get
252 | {
253 | return Resources.ResourceManager.GetString("REPORT_ELEMENT_REPORT", Resources.resourceCulture);
254 | }
255 | }
256 |
257 | internal static string REPORT_ELEMENT_TIMESTAMP
258 | {
259 | get
260 | {
261 | return Resources.ResourceManager.GetString("REPORT_ELEMENT_TIMESTAMP", Resources.resourceCulture);
262 | }
263 | }
264 |
265 | internal static string REPORT_ELEMENT_USERNAME
266 | {
267 | get
268 | {
269 | return Resources.ResourceManager.GetString("REPORT_ELEMENT_USERNAME", Resources.resourceCulture);
270 | }
271 | }
272 |
273 | internal static string RPC_E_CALL_REJECTED_MESSAGE
274 | {
275 | get
276 | {
277 | return Resources.ResourceManager.GetString("RPC_E_CALL_REJECTED_MESSAGE", Resources.resourceCulture);
278 | }
279 | }
280 |
281 | internal static string SCAN_DISABLED_ITEMS
282 | {
283 | get
284 | {
285 | return Resources.ResourceManager.GetString("SCAN_DISABLED_ITEMS", Resources.resourceCulture);
286 | }
287 | }
288 |
289 | internal static string SCAN_FORMREGIONS
290 | {
291 | get
292 | {
293 | return Resources.ResourceManager.GetString("SCAN_FORMREGIONS", Resources.resourceCulture);
294 | }
295 | }
296 |
297 | internal static string SCAN_HKCU
298 | {
299 | get
300 | {
301 | return Resources.ResourceManager.GetString("SCAN_HKCU", Resources.resourceCulture);
302 | }
303 | }
304 |
305 | internal static string SCAN_HKLM
306 | {
307 | get
308 | {
309 | return Resources.ResourceManager.GetString("SCAN_HKLM", Resources.resourceCulture);
310 | }
311 | }
312 |
313 | internal static string SCAN_MANAGED_INTERFACES
314 | {
315 | get
316 | {
317 | return Resources.ResourceManager.GetString("SCAN_MANAGED_INTERFACES", Resources.resourceCulture);
318 | }
319 | }
320 |
321 | internal static string SCAN_NATIVE_INTERFACES
322 | {
323 | get
324 | {
325 | return Resources.ResourceManager.GetString("SCAN_NATIVE_INTERFACES", Resources.resourceCulture);
326 | }
327 | }
328 |
329 | internal static string SCAN_REMOTE
330 | {
331 | get
332 | {
333 | return Resources.ResourceManager.GetString("SCAN_REMOTE", Resources.resourceCulture);
334 | }
335 | }
336 |
337 | internal static string SECONDARY_INTERFACES_NONE
338 | {
339 | get
340 | {
341 | return Resources.ResourceManager.GetString("SECONDARY_INTERFACES_NONE", Resources.resourceCulture);
342 | }
343 | }
344 |
345 | internal static string STATUS_ALERT
346 | {
347 | get
348 | {
349 | return Resources.ResourceManager.GetString("STATUS_ALERT", Resources.resourceCulture);
350 | }
351 | }
352 |
353 | internal static string STATUS_FALSE
354 | {
355 | get
356 | {
357 | return Resources.ResourceManager.GetString("STATUS_FALSE", Resources.resourceCulture);
358 | }
359 | }
360 |
361 | internal static string STATUS_OK
362 | {
363 | get
364 | {
365 | return Resources.ResourceManager.GetString("STATUS_OK", Resources.resourceCulture);
366 | }
367 | }
368 |
369 | internal static string STATUS_TRUE
370 | {
371 | get
372 | {
373 | return Resources.ResourceManager.GetString("STATUS_TRUE", Resources.resourceCulture);
374 | }
375 | }
376 |
377 | internal static string TYPELOADEXCEPTION_MESSAGE
378 | {
379 | get
380 | {
381 | return Resources.ResourceManager.GetString("TYPELOADEXCEPTION_MESSAGE", Resources.resourceCulture);
382 | }
383 | }
384 |
385 | internal static string VALUE_UNKNOWN
386 | {
387 | get
388 | {
389 | return Resources.ResourceManager.GetString("VALUE_UNKNOWN", Resources.resourceCulture);
390 | }
391 | }
392 |
393 | internal static string VSTO_FORMREGION
394 | {
395 | get
396 | {
397 | return Resources.ResourceManager.GetString("VSTO_FORMREGION", Resources.resourceCulture);
398 | }
399 | }
400 |
401 | internal static string VSTO_RIBBON
402 | {
403 | get
404 | {
405 | return Resources.ResourceManager.GetString("VSTO_RIBBON", Resources.resourceCulture);
406 | }
407 | }
408 |
409 | internal static string VSTO_TASKPANE
410 | {
411 | get
412 | {
413 | return Resources.ResourceManager.GetString("VSTO_TASKPANE", Resources.resourceCulture);
414 | }
415 | }
416 |
417 | internal static Bitmap WarningImage
418 | {
419 | get
420 | {
421 | return (Bitmap) Resources.ResourceManager.GetObject("WarningImage", Resources.resourceCulture);
422 | }
423 | }
424 |
425 | internal Resources()
426 | {
427 | }
428 | }
429 | }
430 |
--------------------------------------------------------------------------------
/AddInScanEngine/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | OK
122 |
123 |
124 | This add-in cannot be loaded independently of the host application.
125 |
126 |
127 |
128 |
129 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
130 | JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsRAAALEQF/ZF+RAAACiElE
131 | QVQ4T7WRW0iTYRzGP7VGU3POQ5SQh6GVkXXhjRiWsc+55U3ghS0wwi6KOcJD3YaJUCGGRs1qs5lWc+a3
132 | pWlruXlIrXk+U9qB5tosU8MyvoG0p9dtFwYhdtEPnpvn/zy8//d9qf8Gn8+nCs8XFqakHEr3Wv9GVlbW
133 | iTbzHZdGUzPP4/GivfbGIKcHMozOZp/Zi4nR05DJcu8T288z3QBFRUUlA30XsfKTgx9fQ2Fq1a9ERUUd
134 | 9o7XJzExUWA2PWXHBw/genkGVLdpvB2RorS0rIeMt3hS66BWVzPvX8sx2L0PeXkFKMg/iaXpOAxbGFdS
135 | UlKON/Z3aJoWjo+ZXMv2XRjqSoBUmo1T2RJ8m4zFu6406PWNVg6HE+qN/0lwcLCf2dw2aXsjxbI1HoPm
136 | eKSm0sjJPoKFgQjMdYdgoqfClZmZeZnEfTytNcjl8tyxAbVraToa8yMReNUQDh6Pj+PH9sNh9IO9xRdT
137 | j8LQanz2nfzSHm/NQ0xMTJjBYJj/0L0bsz0BcHT6Y4ThInzbdpzLSYa9iYJNR2Gm3gf9ujPIy8+vJ7VN
138 | njbhUnHxjd7nuXC88IejnQt7KwcOgy8elgTCouLC1kDBWueLjw82Y0rtD+OTul8CgYB2l4VCYUKjvnbF
139 | 1hmJ2Y4wOMx8snIQRjUB2BkZjQsyET4xQbDWh8CqDXXLUiPClaul/aTOpRSVtwxDJhkWhsXkscRY7EvH
140 | Ym8aFi00tBUivNRkYK5DjC/tErfmOsX43CaCUVfpSk4+eJYqK7tmuatUOFWVFc57KoWzrrbKqdfWOlse
141 | a53GZsatZr2WJR6rqVGx1cqbrFJRzqqrlKxEcrRq9RZbiWKJ4jag1dwaUTt+AwJ7VakXZN4zAAAAAElF
142 | TkSuQmCC
143 |
144 |
145 |
146 | Context
147 |
148 |
149 | ipAddress
150 |
151 |
152 | userName
153 |
154 |
155 | domainName
156 |
157 |
158 | Native Interfaces
159 |
160 |
161 | Managed Interfaces
162 |
163 |
164 | RPC Call Rejected: We attempted to connect to the host application, to determine whether each add-in is loaded, but we failed to connect to the host. The host is busy. If there is a dialog open in the host, close it and hit Refresh in this app.
165 |
166 |
167 | true
168 |
169 |
170 | Invalid name
171 |
172 |
173 | Add-in DLL path is not found.
174 |
175 |
176 | n/a
177 |
178 |
179 | This is a remote-deployed add-in and remote scanning is not selected.
180 |
181 |
182 | (none)
183 |
184 |
185 | false
186 |
187 |
188 | Alert
189 |
190 |
191 |
192 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
193 | JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsRAAALEQF/ZF+RAAAB4ElE
194 | QVQ4T2MgFZjLisgvjbCtz7PW1IcKEQ+AmoWfNoff+zYn4f/L9vD/wTryilAp4sD9quDJX2bG//8yLeb/
195 | 3drAN6oifMQbsCzCNuH9pBig5uj/b7vC/lc46NQDhVkhsgQA0OmSz1vCH3+ZGv3/Y2/Y/9UxdruBwvwQ
196 | WSLAg6rgFZ8mR/3/1Bf2/2a53ys1ET5DqBRhAAzxqLfd4UCbQ/+/agoEBVwiUJgFIgsFQCdCWagAHOoN
197 | IQ8/9oT+f9sa8H9qgNkKoDAPRBYKlkXaZb7qi337qD5su6mMiDRUGAyWR9n1ve8K+f++1f//jRKfVyrC
198 | vLpQKQQAan7/e3XW/x9L0/8/bgq7ZyojDI4aYEIxe9UcBNb8stb3f4qpailQGNXpILAsxr7z85zk/z8W
199 | pfwHJZBHdSEPsizUNR5VB95+1+L3/02t1/+Ncfb7gEpxh/rCcJvGdxOiwXH8sT/8/8OqwKdvGiGa7xR7
200 | fdQU47cAKmOEqMYBFoRZF75qC/n/oTPo/7smX6Bmz/8vyt3/t7kbTgBKs0FUEQALQq3Tn9f6/39T4/n/
201 | VZnr/6t5Hi/EuDnkodLEgYVh1ulPy7z+Pyty+Z9npVELFMIMOEIgy1LdNc1MtZSLlVkYKoQDMDAAAEky
202 | zJMGhDfKAAAAAElFTkSuQmCC
203 |
204 |
205 |
206 | AddInSpy provides only partial information for add-ins deployed to HTTP URLs.
207 |
208 |
209 | manifest path cannot be empty
210 |
211 |
212 | context
213 |
214 |
215 | Context information is empty, and add-in information is empty
216 |
217 |
218 | AddIns
219 |
220 |
221 | timestamp
222 |
223 |
224 | MessageClass={0}, FormRegion={1}
225 |
226 |
227 | report
228 |
229 |
230 | Add-in COM CLSID registration is incomplete or invalid.
231 |
232 |
233 | FormRegions
234 |
235 |
236 | Disabled Items
237 |
238 |
239 | ?
240 |
241 |
242 | addIns
243 |
244 |
245 | VSTO
246 |
247 |
248 | Add-in seems to be disabled in: {0} {1}.
249 |
250 |
251 | Native
252 |
253 |
254 | Add-in is registered multiple times.
255 |
256 |
257 | HKCU
258 |
259 |
260 | HKLM
261 |
262 |
263 | os
264 |
265 |
266 | machine
267 |
268 |
269 | The scan for secondary extensibility interfaces failed on this native add-in.
270 |
271 |
272 | Managed
273 |
274 |
275 | TypeLoadException: one reason you can get this error is if you have an Office 2007 add-in registered on a machine which only has Office 2003 installed.{0}{0}Add-in path:{0}{1}{0}{0}Details:{0}{2}
276 |
277 |
278 | Remote
279 |
280 |
281 | VSTO Ribbon
282 |
283 |
284 | VSTO Task Pane
285 |
286 |
287 | VSTO Form Region
288 |
289 |
--------------------------------------------------------------------------------
/AddInScanEngine/RegistryReader.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.RegistryReader
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using AddInSpy.Properties;
8 | using Microsoft.Win32;
9 | using System;
10 | using System.Collections.Generic;
11 | using System.Collections.Specialized;
12 | using System.Text;
13 |
14 | namespace AddInSpy
15 | {
16 | internal class RegistryReader
17 | {
18 | private static string formRegionRegKeyName = "Software\\Microsoft\\Office\\Outlook\\FormRegions";
19 |
20 | internal static void GetAddInsRegHiveNames(RegistryKey regHive, string hostName, out string regHiveName, List officeRegKeyNames)
21 | {
22 | regHiveName = (string) null;
23 | regHiveName = regHive != Registry.CurrentUser ? "HKLM" : "HKCU";
24 | if (hostName == "Visio")
25 | {
26 | officeRegKeyNames.Add("Software\\Microsoft\\Visio\\Addins");
27 |
28 | if (regHiveName == "HKLM")
29 | officeRegKeyNames.Add("Software\\Wow6432Node\\Microsoft\\Visio\\Addins");
30 | }
31 | else if (hostName == "Project")
32 | {
33 | officeRegKeyNames.Add("Software\\Microsoft\\Office\\MS Project\\Addins");
34 |
35 | if (regHiveName == "HKLM")
36 | officeRegKeyNames.Add("Software\\Wow6432Node\\Microsoft\\Office\\MS Project\\Addins");
37 | }
38 | else
39 | {
40 | officeRegKeyNames.Add("Software\\Microsoft\\Office\\" + hostName + "\\Addins");
41 |
42 | if (regHiveName == "HKLM")
43 | officeRegKeyNames.Add("Software\\Wow6432Node\\Microsoft\\Office\\" + hostName + "\\Addins");
44 | }
45 | }
46 |
47 | internal static string GetInprocServerFromClsid(string clsid, string codeBase)
48 | {
49 | string uriString = (string) null;
50 | try
51 | {
52 | RegistryKey registryKey;
53 | using (registryKey = Registry.ClassesRoot.OpenSubKey("CLSID\\" + clsid + "\\InprocServer32"))
54 | {
55 | if (registryKey != null)
56 | {
57 | uriString = (string) registryKey.GetValue(codeBase);
58 | if (uriString != null && uriString.StartsWith("file:///"))
59 | uriString = new Uri(uriString).LocalPath;
60 | }
61 | }
62 | }
63 | catch (Exception ex)
64 | {
65 | Globals.AddException(ex);
66 | }
67 | return uriString;
68 | }
69 |
70 | internal static bool GetIsManagedCodeCategoryRegistered(string clsid)
71 | {
72 | bool flag = false;
73 | try
74 | {
75 | RegistryKey registryKey;
76 | using (registryKey = Registry.ClassesRoot.OpenSubKey("CLSID\\" + clsid + "\\Implemented Categories\\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}"))
77 | {
78 | if (registryKey != null)
79 | flag = true;
80 | }
81 | }
82 | catch (Exception ex)
83 | {
84 | Globals.AddException(ex);
85 | }
86 | return flag;
87 | }
88 |
89 | internal static bool GetIsMscoreeRegistered(string clsid)
90 | {
91 | bool flag = false;
92 | try
93 | {
94 | RegistryKey registryKey;
95 | using (registryKey = Registry.ClassesRoot.OpenSubKey("CLSID\\" + clsid + "\\InprocServer32"))
96 | {
97 | if (registryKey != null)
98 | {
99 | if (((string) registryKey.GetValue((string) null)).Equals("mscoree.dll", StringComparison.InvariantCultureIgnoreCase))
100 | flag = true;
101 | }
102 | }
103 | }
104 | catch (Exception ex)
105 | {
106 | Globals.AddException(ex);
107 | }
108 | return flag;
109 | }
110 |
111 | internal static string GetCLSIDFromProgID(string progId)
112 | {
113 | string str = (string) null;
114 | try
115 | {
116 | using (RegistryKey registryKey = Registry.ClassesRoot.OpenSubKey(progId + "\\CLSID"))
117 | {
118 | if (registryKey != null)
119 | str = (string) registryKey.GetValue((string) null);
120 | }
121 | }
122 | catch (Exception ex)
123 | {
124 | Globals.AddException(ex);
125 | }
126 | return str;
127 | }
128 |
129 | internal static bool ReadResiliencyRegistryKeys(string hostName, string addInPath, string addInFriendlyName, out string disabledStatus)
130 | {
131 | disabledStatus = string.Empty;
132 | bool flag = false;
133 | string[] strArray = new string[2]
134 | {
135 | "11.0",
136 | "12.0"
137 | };
138 | foreach (string officeVersion in strArray)
139 | {
140 | if (RegistryReader.ReadDisabledItems(hostName, officeVersion, addInPath, addInFriendlyName))
141 | {
142 | string str = string.Format(Resources.ADDIN_DISABLED, (object) hostName, (object) officeVersion);
143 | disabledStatus = disabledStatus.Length != 0 ? string.Format("{0} {1}", (object) disabledStatus, (object) str) : str;
144 | flag = true;
145 | }
146 | }
147 | return flag;
148 | }
149 |
150 | private static bool ReadDisabledItems(string appName, string officeVersion, string addInPath, string addInFriendlyName)
151 | {
152 | bool flag = false;
153 | string name1 = string.Format("Software\\Microsoft\\Office\\{0}\\{1}\\Resiliency\\DisabledItems", (object) officeVersion, (object) appName);
154 | try
155 | {
156 | using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(name1))
157 | {
158 | if (registryKey != null)
159 | {
160 | foreach (string name2 in registryKey.GetValueNames())
161 | {
162 | Encoding unicode = Encoding.Unicode;
163 | byte[] bytes = (byte[]) registryKey.GetValue(name2);
164 | char[] chars = new char[unicode.GetCharCount(bytes, 0, bytes.Length)];
165 | unicode.GetChars(bytes, 0, bytes.Length, chars, 0);
166 | string str1 = new string(chars);
167 | int length1 = str1.LastIndexOf(char.MinValue);
168 | string str2 = str1.Substring(0, length1);
169 | int length2 = str2.LastIndexOf(char.MinValue);
170 | string str3 = str2.Substring(0, length2);
171 | int num = str3.LastIndexOf(char.MinValue);
172 | string strB1 = str3.Substring(num + 1);
173 | string strB2 = str2.Substring(length2 + 1, str1.Length - length2 - 2);
174 | if (string.Compare(addInPath, strB1, true) == 0 && string.Compare(addInFriendlyName, strB2, true) == 0)
175 | {
176 | flag = true;
177 | break;
178 | }
179 | }
180 | }
181 | }
182 | }
183 | catch (Exception ex)
184 | {
185 | Globals.AddException(ex);
186 | }
187 | return flag;
188 | }
189 |
190 | internal static NameValueCollection ReadFormRegionRegistrations(RegistryKey regHive)
191 | {
192 | NameValueCollection nameValueCollection = new NameValueCollection();
193 | try
194 | {
195 | using (RegistryKey registryKey1 = regHive.OpenSubKey(RegistryReader.formRegionRegKeyName))
196 | {
197 | if (registryKey1 != null)
198 | {
199 | foreach (string name1 in registryKey1.GetSubKeyNames())
200 | {
201 | using (RegistryKey registryKey2 = registryKey1.OpenSubKey(name1))
202 | {
203 | foreach (string name2 in registryKey2.GetValueNames())
204 | {
205 | string name3 = ((string) registryKey2.GetValue(name2)).TrimStart('=');
206 | string str = string.Format(Resources.MESSAGECLASS_FORMREGION, (object) name1, (object) name2);
207 | nameValueCollection.Add(name3, str);
208 | }
209 | }
210 | }
211 | }
212 | }
213 | }
214 | catch (Exception ex)
215 | {
216 | Globals.AddException(ex);
217 | }
218 | return nameValueCollection;
219 | }
220 | }
221 | }
222 |
--------------------------------------------------------------------------------
/AddInScanEngine/ReportWriter.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.ReportWriter
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using AddInSpy.Properties;
8 | using System;
9 | using System.Data;
10 | using System.Xml;
11 |
12 | namespace AddInSpy
13 | {
14 | internal class ReportWriter
15 | {
16 | private DataTable dataTable;
17 | private string hostAddress;
18 | private string hostName;
19 | private string userName;
20 | private string domainName;
21 | private string osVersion;
22 | private string vstoSuppressDisplayAlerts;
23 | private string vstoLogAlerts;
24 |
25 | public ReportWriter(DataTable dataTable, string hostAddress, string hostName, string userName, string domainName, string osVersion, string vstoSuppressDisplayAlerts, string vstoLogAlerts)
26 | {
27 | this.dataTable = dataTable;
28 | this.hostAddress = hostAddress;
29 | this.hostName = hostName;
30 | this.userName = userName;
31 | this.domainName = domainName;
32 | this.osVersion = osVersion;
33 | this.vstoSuppressDisplayAlerts = vstoSuppressDisplayAlerts;
34 | this.vstoLogAlerts = vstoLogAlerts;
35 | }
36 |
37 | internal void GenerateReport(bool reportContext, bool reportAddIns, string reportFileName)
38 | {
39 | XmlDocument contextXml = (XmlDocument) null;
40 | XmlDocument addInXml = (XmlDocument) null;
41 | if (reportContext)
42 | contextXml = this.GetContextXml();
43 | if (reportAddIns)
44 | addInXml = this.GetAddInsXml();
45 | this.Export(contextXml, addInXml, reportFileName);
46 | }
47 |
48 | private XmlDocument GetAddInsXml()
49 | {
50 | DataTable dataTable = this.dataTable.Copy();
51 | dataTable.TableName = "addIn";
52 | dataTable.Columns.Remove("Status2");
53 | string xml = new DataSet("addIns")
54 | {
55 | Tables = {
56 | dataTable
57 | }
58 | }.GetXml();
59 | XmlDocument xmlDocument = new XmlDocument();
60 | xmlDocument.LoadXml(xml);
61 | foreach (XmlNode xmlNode in xmlDocument.SelectNodes("addIns/addIn/Status"))
62 | xmlNode.InnerXml = xmlNode.InnerXml.CompareTo(Resources.STATUS_TRUE) != 0 ? Resources.STATUS_ALERT : Resources.STATUS_OK;
63 | return xmlDocument;
64 | }
65 |
66 | private XmlDocument GetContextXml()
67 | {
68 | XmlDocument xmlDocument = new XmlDocument();
69 | XmlElement element1 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_CONTEXT);
70 | XmlElement element2 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_TIMESTAMP);
71 | element2.InnerText = DateTime.Now.ToString();
72 | element1.AppendChild((XmlNode) element2);
73 | XmlElement element3 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_MACHINE);
74 | element3.InnerText = this.hostName;
75 | element1.AppendChild((XmlNode) element3);
76 | XmlElement element4 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_IPADDRESS);
77 | element4.InnerText = this.hostAddress;
78 | element1.AppendChild((XmlNode) element4);
79 | XmlElement element5 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_USERNAME);
80 | element5.InnerText = this.userName;
81 | element1.AppendChild((XmlNode) element5);
82 | XmlElement element6 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_DOMAINNAME);
83 | element6.InnerText = this.domainName;
84 | element1.AppendChild((XmlNode) element6);
85 | XmlElement element7 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_OS);
86 | element7.InnerText = this.osVersion;
87 | element1.AppendChild((XmlNode) element7);
88 | xmlDocument.AppendChild((XmlNode) element1);
89 | return xmlDocument;
90 | }
91 |
92 | private void Export(XmlDocument contextXml, XmlDocument addInXml, string reportFileName)
93 | {
94 | if (contextXml == null && addInXml == null)
95 | {
96 | Globals.AddErrorMessage(Resources.CONTEXT_ADDIN_EMPTY);
97 | }
98 | else
99 | {
100 | XmlDocument xmlDocument = new XmlDocument();
101 | XmlElement element1 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_REPORT);
102 | xmlDocument.AppendChild((XmlNode) element1);
103 | if (contextXml != null)
104 | {
105 | XmlElement element2 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_CONTEXT);
106 | element2.InnerXml = contextXml.FirstChild.InnerXml;
107 | xmlDocument.FirstChild.AppendChild((XmlNode) element2);
108 | if (addInXml != null)
109 | {
110 | XmlElement element3 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_ADDINS);
111 | element3.InnerXml = addInXml.FirstChild.InnerXml;
112 | xmlDocument.FirstChild.AppendChild((XmlNode) element3);
113 | }
114 | }
115 | else if (addInXml != null)
116 | {
117 | XmlElement element2 = xmlDocument.CreateElement(Resources.REPORT_ELEMENT_ADDINS);
118 | element2.InnerXml = addInXml.FirstChild.InnerXml;
119 | xmlDocument.FirstChild.AppendChild((XmlNode) element2);
120 | }
121 | if (reportFileName == null || reportFileName.Length == 0)
122 | reportFileName = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + string.Format("{0}_{1}@{2}", (object) this.hostAddress, (object) this.userName, (object) this.domainName).Replace(":", ".") + ".xml";
123 | xmlDocument.Save(reportFileName);
124 | }
125 | }
126 | }
127 | }
128 |
--------------------------------------------------------------------------------
/AddInScanEngine/SecondaryExtensibility.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.SecondaryExtensibility
3 | // Assembly: AddInScanEngine, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: F92CC3BC-B994-4216-9D73-6B4F2C71BD20
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInScanEngine.dll
6 |
7 | using System;
8 | using System.Collections.Generic;
9 |
10 | namespace AddInSpy
11 | {
12 | internal class SecondaryExtensibility
13 | {
14 | private IDictionary addInInterfaces;
15 |
16 | internal IDictionary AddInInterfaces
17 | {
18 | get
19 | {
20 | return this.addInInterfaces;
21 | }
22 | }
23 |
24 | public SecondaryExtensibility(string hostName)
25 | {
26 | this.addInInterfaces = (IDictionary) new Dictionary();
27 | switch (hostName)
28 | {
29 | case "Access":
30 | this.addInInterfaces.Add(new KeyValuePair("ICustomTaskPaneConsumer", new Guid("{000C033E-0000-0000-C000-000000000046}")));
31 | this.addInInterfaces.Add(new KeyValuePair("IRibbonExtensibility", new Guid("{000C0396-0000-0000-C000-000000000046}")));
32 | break;
33 | case "Excel":
34 | this.addInInterfaces.Add(new KeyValuePair("ICustomTaskPaneConsumer", new Guid("{000C033E-0000-0000-C000-000000000046}")));
35 | this.addInInterfaces.Add(new KeyValuePair("IRibbonExtensibility", new Guid("{000C0396-0000-0000-C000-000000000046}")));
36 | this.addInInterfaces.Add(new KeyValuePair("EncryptionProvider", new Guid("{000CD809-0000-0000-C000-000000000046}")));
37 | this.addInInterfaces.Add(new KeyValuePair("SignatureProvider", new Guid("{000CD6A3-0000-0000-C000-000000000046}")));
38 | this.addInInterfaces.Add(new KeyValuePair("IDocumentInspector", new Guid("{000C0393-0000-0000-C000-000000000046}")));
39 | break;
40 | case "InfoPath":
41 | this.addInInterfaces.Add(new KeyValuePair("ICustomTaskPaneConsumer", new Guid("{000C033E-0000-0000-C000-000000000046}")));
42 | break;
43 | case "Outlook":
44 | this.addInInterfaces.Add(new KeyValuePair("ICustomTaskPaneConsumer", new Guid("{000C033E-0000-0000-C000-000000000046}")));
45 | this.addInInterfaces.Add(new KeyValuePair("IRibbonExtensibility", new Guid("{000C0396-0000-0000-C000-000000000046}")));
46 | this.addInInterfaces.Add(new KeyValuePair("FormRegionStartup", new Guid("{00063059-0000-0000-C000-000000000046}")));
47 | break;
48 | case "PowerPoint":
49 | this.addInInterfaces.Add(new KeyValuePair("ICustomTaskPaneConsumer", new Guid("{000C033E-0000-0000-C000-000000000046}")));
50 | this.addInInterfaces.Add(new KeyValuePair("IRibbonExtensibility", new Guid("{000C0396-0000-0000-C000-000000000046}")));
51 | this.addInInterfaces.Add(new KeyValuePair("EncryptionProvider", new Guid("{000CD809-0000-0000-C000-000000000046}")));
52 | this.addInInterfaces.Add(new KeyValuePair("SignatureProvider", new Guid("{000CD6A3-0000-0000-C000-000000000046}")));
53 | this.addInInterfaces.Add(new KeyValuePair("IDocumentInspector", new Guid("{000C0393-0000-0000-C000-000000000046}")));
54 | break;
55 | case "Word":
56 | this.addInInterfaces.Add(new KeyValuePair("ICustomTaskPaneConsumer", new Guid("{000C033E-0000-0000-C000-000000000046}")));
57 | this.addInInterfaces.Add(new KeyValuePair("IRibbonExtensibility", new Guid("{000C0396-0000-0000-C000-000000000046}")));
58 | this.addInInterfaces.Add(new KeyValuePair("EncryptionProvider", new Guid("{000CD809-0000-0000-C000-000000000046}")));
59 | this.addInInterfaces.Add(new KeyValuePair("SignatureProvider", new Guid("{000CD6A3-0000-0000-C000-000000000046}")));
60 | this.addInInterfaces.Add(new KeyValuePair("IDocumentInspector", new Guid("{000C0393-0000-0000-C000-000000000046}")));
61 | this.addInInterfaces.Add(new KeyValuePair("IBlogExtensibility", new Guid("{000C03C4-0000-0000-C000-000000000046}")));
62 | this.addInInterfaces.Add(new KeyValuePair("IBlogPictureExtensibility", new Guid("{000C03C5-0000-0000-C000-000000000046}")));
63 | break;
64 | }
65 | }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/AddInSpy.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.31101.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInSpy", "AddInSpy\AddInSpy.csproj", "{5A0D7117-5711-4C74-A1D0-BC2D878BC093}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInScanEngine", "AddInScanEngine\AddInScanEngine.csproj", "{5DAF28B6-078C-457D-9591-13DFE22C1CE3}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AS", "AS\AS.csproj", "{26FB0558-0C68-49D4-96BE-CB305EE1FD1E}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Release|Any CPU = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {5A0D7117-5711-4C74-A1D0-BC2D878BC093}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19 | {5A0D7117-5711-4C74-A1D0-BC2D878BC093}.Debug|Any CPU.Build.0 = Debug|Any CPU
20 | {5A0D7117-5711-4C74-A1D0-BC2D878BC093}.Release|Any CPU.ActiveCfg = Release|Any CPU
21 | {5A0D7117-5711-4C74-A1D0-BC2D878BC093}.Release|Any CPU.Build.0 = Release|Any CPU
22 | {5DAF28B6-078C-457D-9591-13DFE22C1CE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {5DAF28B6-078C-457D-9591-13DFE22C1CE3}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {5DAF28B6-078C-457D-9591-13DFE22C1CE3}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {5DAF28B6-078C-457D-9591-13DFE22C1CE3}.Release|Any CPU.Build.0 = Release|Any CPU
26 | {26FB0558-0C68-49D4-96BE-CB305EE1FD1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {26FB0558-0C68-49D4-96BE-CB305EE1FD1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {26FB0558-0C68-49D4-96BE-CB305EE1FD1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
29 | {26FB0558-0C68-49D4-96BE-CB305EE1FD1E}.Release|Any CPU.Build.0 = Release|Any CPU
30 | EndGlobalSection
31 | GlobalSection(SolutionProperties) = preSolution
32 | HideSolutionNode = FALSE
33 | EndGlobalSection
34 | EndGlobal
35 |
--------------------------------------------------------------------------------
/AddInSpy/AddInDataControl.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.AddInDataControl
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using System.ComponentModel;
8 | using System.Drawing;
9 | using System.Windows.Forms;
10 |
11 | namespace AddInSpy
12 | {
13 | public class AddInDataControl : UserControl
14 | {
15 | private IContainer components = (IContainer) null;
16 | internal DataGridView dataGrid;
17 | private DataGridViewTextBoxColumn Item;
18 | private DataGridViewTextBoxColumn Value;
19 |
20 | public AddInDataControl()
21 | {
22 | this.InitializeComponent();
23 | }
24 |
25 | protected override void Dispose(bool disposing)
26 | {
27 | if (disposing && this.components != null)
28 | this.components.Dispose();
29 | base.Dispose(disposing);
30 | }
31 |
32 | private void InitializeComponent()
33 | {
34 | DataGridViewCellStyle gridViewCellStyle = new DataGridViewCellStyle();
35 | ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof (AddInDataControl));
36 | this.dataGrid = new DataGridView();
37 | this.Item = new DataGridViewTextBoxColumn();
38 | this.Value = new DataGridViewTextBoxColumn();
39 | ((ISupportInitialize) this.dataGrid).BeginInit();
40 | this.SuspendLayout();
41 | this.dataGrid.AllowUserToAddRows = false;
42 | this.dataGrid.AllowUserToDeleteRows = false;
43 | gridViewCellStyle.BackColor = Color.Lavender;
44 | gridViewCellStyle.SelectionBackColor = Color.Thistle;
45 | gridViewCellStyle.SelectionForeColor = Color.Black;
46 | this.dataGrid.AlternatingRowsDefaultCellStyle = gridViewCellStyle;
47 | this.dataGrid.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
48 | this.dataGrid.Columns.AddRange((DataGridViewColumn) this.Item, (DataGridViewColumn) this.Value);
49 | componentResourceManager.ApplyResources((object) this.dataGrid, "dataGrid");
50 | this.dataGrid.Name = "dataGrid";
51 | this.Item.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
52 | this.Item.DataPropertyName = "Item";
53 | this.Item.FillWeight = 121.8274f;
54 | componentResourceManager.ApplyResources((object) this.Item, "Item");
55 | this.Item.Name = "Item";
56 | this.Value.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
57 | this.Value.DataPropertyName = "Value";
58 | this.Value.FillWeight = 78.17259f;
59 | componentResourceManager.ApplyResources((object) this.Value, "Value");
60 | this.Value.Name = "Value";
61 | componentResourceManager.ApplyResources((object) this, "$this");
62 | this.AutoScaleMode = AutoScaleMode.Font;
63 | this.Controls.Add((Control) this.dataGrid);
64 | this.Name = "AddInDataControl";
65 | ((ISupportInitialize) this.dataGrid).EndInit();
66 | this.ResumeLayout(false);
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/AddInSpy/AddInDataControl.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | 0, 0
123 |
124 |
125 | 840, 540
126 |
127 |
128 | Value
129 |
130 |
131 | dataGrid
132 |
133 |
134 | System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
135 |
136 |
137 | $this
138 |
139 |
140 | 0
141 |
142 |
143 | System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
144 |
145 |
146 | Item
147 |
148 |
149 |
150 | Fill
151 |
152 |
153 | 840, 540
154 |
155 |
156 |
157 | 0
158 |
159 |
160 | Item
161 |
162 |
163 | True
164 |
165 |
166 | 120
167 |
168 |
169 | Value
170 |
171 |
172 | System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
173 |
174 |
175 | AddInDataControl
176 |
177 |
178 | System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
179 |
180 |
181 | 820, 506
182 |
183 |
184 | 6, 13
185 |
186 |
--------------------------------------------------------------------------------
/AddInSpy/AddInGridControl.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.AddInGridControl
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using System.ComponentModel;
8 | using System.Drawing;
9 | using System.Windows.Forms;
10 |
11 | namespace AddInSpy
12 | {
13 | public class AddInGridControl : UserControl, IAddInGridControl
14 | {
15 | private IContainer components = (IContainer) null;
16 | private DataGridView addInGrid;
17 | private DataGridViewTextBoxColumn Item;
18 | private DataGridViewTextBoxColumn Host;
19 | private DataGridViewCheckBoxColumn Running;
20 | private DataGridViewCheckBoxColumn Loaded;
21 | private DataGridViewTextBoxColumn Type;
22 | private DataGridViewTextBoxColumn FriendlyName;
23 | private DataGridViewTextBoxColumn ProgID;
24 | private DataGridViewTextBoxColumn CLSID;
25 | private DataGridViewTextBoxColumn Manifest;
26 | private DataGridViewTextBoxColumn DllPath;
27 | private DataGridViewTextBoxColumn LoadBehavior;
28 | private DataGridViewTextBoxColumn RegHive;
29 | private DataGridViewCheckBoxColumn Wow6432;
30 | private DataGridViewTextBoxColumn AssemblyName;
31 | private DataGridViewTextBoxColumn CLR_version;
32 | private DataGridViewCheckBoxColumn Exposed;
33 | private DataGridViewTextBoxColumn Interfaces;
34 | private DataGridViewTextBoxColumn FormRegions;
35 | private DataGridViewTextBoxColumn VSTOR;
36 | private DataGridViewTextBoxColumn Installed;
37 | private DataGridViewTextBoxColumn PubVer;
38 | private DataGridViewImageColumn Status2;
39 | private DataGridViewCheckBoxColumn Status;
40 | private DataGridViewTextBoxColumn StatusDescription;
41 |
42 | public DataGridView AddInGrid
43 | {
44 | get
45 | {
46 | return this.addInGrid;
47 | }
48 | }
49 |
50 | public AddInGridControl()
51 | {
52 | this.InitializeComponent();
53 | }
54 |
55 | protected override void Dispose(bool disposing)
56 | {
57 | if (disposing && this.components != null)
58 | this.components.Dispose();
59 | base.Dispose(disposing);
60 | }
61 |
62 | private void InitializeComponent()
63 | {
64 | DataGridViewCellStyle gridViewCellStyle1 = new DataGridViewCellStyle();
65 | DataGridViewCellStyle gridViewCellStyle2 = new DataGridViewCellStyle();
66 | DataGridViewCellStyle gridViewCellStyle3 = new DataGridViewCellStyle();
67 | ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof (AddInGridControl));
68 | this.addInGrid = new DataGridView();
69 | this.Item = new DataGridViewTextBoxColumn();
70 | this.Host = new DataGridViewTextBoxColumn();
71 | this.Running = new DataGridViewCheckBoxColumn();
72 | this.Loaded = new DataGridViewCheckBoxColumn();
73 | this.Type = new DataGridViewTextBoxColumn();
74 | this.FriendlyName = new DataGridViewTextBoxColumn();
75 | this.ProgID = new DataGridViewTextBoxColumn();
76 | this.CLSID = new DataGridViewTextBoxColumn();
77 | this.Manifest = new DataGridViewTextBoxColumn();
78 | this.DllPath = new DataGridViewTextBoxColumn();
79 | this.LoadBehavior = new DataGridViewTextBoxColumn();
80 | this.RegHive = new DataGridViewTextBoxColumn();
81 | this.Wow6432 = new DataGridViewCheckBoxColumn();
82 | this.AssemblyName = new DataGridViewTextBoxColumn();
83 | this.CLR_version = new DataGridViewTextBoxColumn();
84 | this.Exposed = new DataGridViewCheckBoxColumn();
85 | this.Interfaces = new DataGridViewTextBoxColumn();
86 | this.FormRegions = new DataGridViewTextBoxColumn();
87 | this.VSTOR = new DataGridViewTextBoxColumn();
88 | this.Installed = new DataGridViewTextBoxColumn();
89 | this.PubVer = new DataGridViewTextBoxColumn();
90 | this.Status2 = new DataGridViewImageColumn();
91 | this.Status = new DataGridViewCheckBoxColumn();
92 | this.StatusDescription = new DataGridViewTextBoxColumn();
93 | ((ISupportInitialize) this.addInGrid).BeginInit();
94 | this.SuspendLayout();
95 | this.addInGrid.AllowUserToAddRows = false;
96 | this.addInGrid.AllowUserToDeleteRows = false;
97 | this.addInGrid.AllowUserToOrderColumns = true;
98 | gridViewCellStyle1.BackColor = Color.Lavender;
99 | gridViewCellStyle1.SelectionBackColor = Color.Thistle;
100 | gridViewCellStyle1.SelectionForeColor = Color.Black;
101 | this.addInGrid.AlternatingRowsDefaultCellStyle = gridViewCellStyle1;
102 | this.addInGrid.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
103 | this.addInGrid.Columns.AddRange((DataGridViewColumn) this.Item, (DataGridViewColumn) this.Host, (DataGridViewColumn) this.Running, (DataGridViewColumn) this.Loaded, (DataGridViewColumn) this.Type, (DataGridViewColumn) this.FriendlyName, (DataGridViewColumn) this.ProgID, (DataGridViewColumn) this.CLSID, (DataGridViewColumn) this.Manifest, (DataGridViewColumn) this.DllPath, (DataGridViewColumn) this.LoadBehavior, (DataGridViewColumn) this.RegHive, (DataGridViewColumn) this.Wow6432, (DataGridViewColumn) this.AssemblyName, (DataGridViewColumn) this.CLR_version, (DataGridViewColumn) this.Exposed, (DataGridViewColumn) this.Interfaces, (DataGridViewColumn) this.FormRegions, (DataGridViewColumn) this.VSTOR, (DataGridViewColumn) this.Installed, (DataGridViewColumn) this.PubVer, (DataGridViewColumn) this.Status2, (DataGridViewColumn) this.Status, (DataGridViewColumn) this.StatusDescription);
104 | gridViewCellStyle2.Alignment = DataGridViewContentAlignment.MiddleLeft;
105 | gridViewCellStyle2.BackColor = SystemColors.Window;
106 | gridViewCellStyle2.Font = new Font("Microsoft Sans Serif", 8.25f, FontStyle.Regular, GraphicsUnit.Point, (byte) 0);
107 | gridViewCellStyle2.ForeColor = SystemColors.ControlText;
108 | gridViewCellStyle2.SelectionBackColor = Color.Thistle;
109 | gridViewCellStyle2.SelectionForeColor = SystemColors.ControlText;
110 | gridViewCellStyle2.WrapMode = DataGridViewTriState.False;
111 | this.addInGrid.DefaultCellStyle = gridViewCellStyle2;
112 | componentResourceManager.ApplyResources((object) this.addInGrid, "addInGrid");
113 | this.addInGrid.Name = "addInGrid";
114 | gridViewCellStyle3.SelectionBackColor = Color.Thistle;
115 | gridViewCellStyle3.SelectionForeColor = Color.Black;
116 | this.addInGrid.RowsDefaultCellStyle = gridViewCellStyle3;
117 | this.Item.DataPropertyName = "Item";
118 | componentResourceManager.ApplyResources((object) this.Item, "Item");
119 | this.Item.Name = "Item";
120 | this.Host.DataPropertyName = "Host";
121 | componentResourceManager.ApplyResources((object) this.Host, "Host");
122 | this.Host.Name = "Host";
123 | this.Running.DataPropertyName = "Running";
124 | componentResourceManager.ApplyResources((object) this.Running, "Running");
125 | this.Running.Name = "Running";
126 | this.Loaded.DataPropertyName = "Loaded";
127 | componentResourceManager.ApplyResources((object) this.Loaded, "Loaded");
128 | this.Loaded.Name = "Loaded";
129 | this.Type.DataPropertyName = "Type";
130 | componentResourceManager.ApplyResources((object) this.Type, "Type");
131 | this.Type.Name = "Type";
132 | this.FriendlyName.DataPropertyName = "FriendlyName";
133 | componentResourceManager.ApplyResources((object) this.FriendlyName, "FriendlyName");
134 | this.FriendlyName.Name = "FriendlyName";
135 | this.ProgID.DataPropertyName = "ProgID";
136 | componentResourceManager.ApplyResources((object) this.ProgID, "ProgID");
137 | this.ProgID.Name = "ProgID";
138 | this.CLSID.DataPropertyName = "CLSID";
139 | componentResourceManager.ApplyResources((object) this.CLSID, "CLSID");
140 | this.CLSID.Name = "CLSID";
141 | this.Manifest.DataPropertyName = "Manifest";
142 | componentResourceManager.ApplyResources((object) this.Manifest, "Manifest");
143 | this.Manifest.Name = "Manifest";
144 | this.DllPath.DataPropertyName = "DllPath";
145 | componentResourceManager.ApplyResources((object) this.DllPath, "DllPath");
146 | this.DllPath.Name = "DllPath";
147 | this.LoadBehavior.DataPropertyName = "LoadBehavior";
148 | componentResourceManager.ApplyResources((object) this.LoadBehavior, "LoadBehavior");
149 | this.LoadBehavior.Name = "LoadBehavior";
150 | this.RegHive.DataPropertyName = "RegHive";
151 | componentResourceManager.ApplyResources((object) this.RegHive, "RegHive");
152 | this.RegHive.Name = "RegHive";
153 | this.Wow6432.DataPropertyName = "Wow6432";
154 | componentResourceManager.ApplyResources((object)this.Wow6432, "Wow6432");
155 | this.Wow6432.Name = "Wow6432";
156 | this.AssemblyName.DataPropertyName = "AssemblyName";
157 | componentResourceManager.ApplyResources((object) this.AssemblyName, "AssemblyName");
158 | this.AssemblyName.Name = "AssemblyName";
159 | this.CLR_version.DataPropertyName = "CLR_version";
160 | componentResourceManager.ApplyResources((object) this.CLR_version, "CLR_version");
161 | this.CLR_version.Name = "CLR_version";
162 | this.Exposed.DataPropertyName = "Exposed";
163 | componentResourceManager.ApplyResources((object) this.Exposed, "Exposed");
164 | this.Exposed.Name = "Exposed";
165 | this.Interfaces.DataPropertyName = "Interfaces";
166 | componentResourceManager.ApplyResources((object) this.Interfaces, "Interfaces");
167 | this.Interfaces.Name = "Interfaces";
168 | this.FormRegions.DataPropertyName = "FormRegions";
169 | componentResourceManager.ApplyResources((object) this.FormRegions, "FormRegions");
170 | this.FormRegions.Name = "FormRegions";
171 | this.VSTOR.DataPropertyName = "VSTOR";
172 | componentResourceManager.ApplyResources((object) this.VSTOR, "VSTOR");
173 | this.VSTOR.Name = "VSTOR";
174 | this.Installed.DataPropertyName = "Installed";
175 | componentResourceManager.ApplyResources((object) this.Installed, "Installed");
176 | this.Installed.Name = "Installed";
177 | this.PubVer.DataPropertyName = "PubVer";
178 | componentResourceManager.ApplyResources((object) this.PubVer, "PubVer");
179 | this.PubVer.Name = "PubVer";
180 | this.Status2.DataPropertyName = "Status2";
181 | componentResourceManager.ApplyResources((object) this.Status2, "Status2");
182 | this.Status2.Name = "Status2";
183 | this.Status.DataPropertyName = "Status";
184 | componentResourceManager.ApplyResources((object) this.Status, "Status");
185 | this.Status.Name = "Status";
186 | this.StatusDescription.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
187 | this.StatusDescription.DataPropertyName = "StatusDescription";
188 | componentResourceManager.ApplyResources((object) this.StatusDescription, "StatusDescription");
189 | this.StatusDescription.Name = "StatusDescription";
190 | componentResourceManager.ApplyResources((object) this, "$this");
191 | this.AutoScaleMode = AutoScaleMode.Font;
192 | this.Controls.Add((Control) this.addInGrid);
193 | this.Name = "AddInGridControl";
194 | ((ISupportInitialize) this.addInGrid).EndInit();
195 | this.ResumeLayout(false);
196 | }
197 | }
198 | }
199 |
--------------------------------------------------------------------------------
/AddInSpy/AddInSpy.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {5A0D7117-5711-4C74-A1D0-BC2D878BC093}
8 | WinExe
9 | AddInSpy
10 | AddInSpy
11 | v4.5
12 |
13 |
14 |
15 |
16 | 2.0
17 |
18 | publish\
19 | true
20 | Disk
21 | false
22 | Foreground
23 | 7
24 | Days
25 | false
26 | false
27 | true
28 | 0
29 | 1.5.0.0
30 | false
31 | false
32 | true
33 |
34 |
35 | AnyCPU
36 | true
37 | full
38 | false
39 | bin\Debug\
40 | DEBUG;TRACE
41 | prompt
42 | 4
43 | false
44 |
45 |
46 | AnyCPU
47 | pdbonly
48 | true
49 | bin\Release\
50 | TRACE
51 | prompt
52 | 4
53 | false
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 | UserControl
70 |
71 |
72 | UserControl
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | checkedcombocontrol.xaml
81 | Code
82 |
83 |
84 | helpwindow.xaml
85 | Code
86 |
87 |
88 | addinspywindow.xaml
89 | Code
90 |
91 |
92 | wfgridproxycontrol.xaml
93 | Code
94 |
95 |
96 | wfdataproxywindow.xaml
97 | Code
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 | Designer
114 |
115 |
116 |
117 |
118 |
119 | MSBuild:Compile
120 | Designer
121 | MSBuild:Compile
122 | Designer
123 |
124 |
125 | MSBuild:Compile
126 | Designer
127 | MSBuild:Compile
128 | Designer
129 |
130 |
131 | MSBuild:Compile
132 | Designer
133 | MSBuild:Compile
134 | Designer
135 |
136 |
137 | MSBuild:Compile
138 | Designer
139 | MSBuild:Compile
140 | Designer
141 |
142 |
143 | MSBuild:Compile
144 | Designer
145 | MSBuild:Compile
146 | Designer
147 |
148 |
149 |
150 |
151 | {5daf28b6-078c-457d-9591-13dfe22c1ce3}
152 | AddInScanEngine
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 | False
161 | .NET Framework 3.5 SP1 Client Profile
162 | false
163 |
164 |
165 | False
166 | .NET Framework 3.5 SP1
167 | true
168 |
169 |
170 |
171 |
--------------------------------------------------------------------------------
/AddInSpy/App.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.App
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using System;
8 | using System.Diagnostics;
9 | using System.Windows;
10 |
11 | namespace AddInSpy
12 | {
13 | public class App : Application
14 | {
15 | [DebuggerNonUserCode]
16 | public void InitializeComponent()
17 | {
18 | this.StartupUri = new Uri("AddInSpyWindow.xaml", UriKind.Relative);
19 | }
20 |
21 | [DebuggerNonUserCode]
22 | [STAThread]
23 | public static void Main()
24 | {
25 | App app = new App();
26 | app.InitializeComponent();
27 | app.Run();
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/AddInSpy/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 | using System.Windows;
4 |
5 | [assembly: AssemblyTitle("AddInSpy")]
6 | [assembly: AssemblyDescription("")]
7 | [assembly: AssemblyConfiguration("")]
8 | [assembly: AssemblyCompany("Microsoft")]
9 | [assembly: AssemblyProduct("AddInSpy")]
10 | [assembly: AssemblyCopyright("Copyright © Microsoft 2008")]
11 | [assembly: AssemblyTrademark("")]
12 | [assembly: ComVisible(false)]
13 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
14 | [assembly: AssemblyFileVersion("1.5.0.0")]
15 | [assembly: AssemblyVersion("1.5.0.0")]
16 |
--------------------------------------------------------------------------------
/AddInSpy/CheckedComboClick.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.CheckedComboClick
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | namespace AddInSpy
8 | {
9 | public delegate void CheckedComboClick(object sender, CheckedComboEventArgs e);
10 | }
11 |
--------------------------------------------------------------------------------
/AddInSpy/CheckedComboControl.xaml.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.CheckedComboControl
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using AddInSpy.Properties;
8 | using System;
9 | using System.Collections;
10 | using System.Collections.Generic;
11 | using System.ComponentModel;
12 | using System.Diagnostics;
13 | using System.Windows;
14 | using System.Windows.Controls;
15 | using System.Windows.Controls.Primitives;
16 | using System.Windows.Markup;
17 | using AppResources = AddInSpy.Properties.Resources;
18 |
19 | namespace AddInSpy
20 | {
21 | public partial class CheckedComboControl : UserControl, IComponentConnector
22 | {
23 | public string[] CheckedItems
24 | {
25 | get
26 | {
27 | List list = new List();
28 | foreach (object obj in (IEnumerable) this.Combo.Items)
29 | {
30 | int num;
31 | if (obj is CheckBox)
32 | {
33 | bool? isChecked = ((ToggleButton) obj).IsChecked;
34 | if (isChecked.HasValue)
35 | {
36 | isChecked = ((ToggleButton) obj).IsChecked;
37 | num = !isChecked.Value ? 1 : 0;
38 | goto label_6;
39 | }
40 | }
41 | num = 1;
42 | label_6:
43 | if (num == 0)
44 | list.Add(((ContentControl) obj).Content.ToString());
45 | }
46 | return list.ToArray();
47 | }
48 | }
49 |
50 | public event CheckedComboClick CheckedComboClickEvent;
51 |
52 | public CheckedComboControl()
53 | {
54 | this.InitializeComponent();
55 | }
56 |
57 | internal void CheckBox_Click(object sender, RoutedEventArgs e)
58 | {
59 | List list = new List();
60 | string str = string.Empty;
61 | CheckBox checkBox1 = (CheckBox) sender;
62 | if (checkBox1.Name == "checkAll")
63 | {
64 | for (int index = 1; index < this.Combo.Items.Count; ++index)
65 | ((ToggleButton) this.Combo.Items[index]).IsChecked = checkBox1.IsChecked;
66 | }
67 | for (int index = 1; index < this.Combo.Items.Count; ++index)
68 | {
69 | CheckBox checkBox2 = (CheckBox) this.Combo.Items[index];
70 | bool? isChecked = checkBox2.IsChecked;
71 | int num;
72 | if (isChecked.HasValue)
73 | {
74 | isChecked = checkBox2.IsChecked;
75 | num = !isChecked.Value ? 1 : 0;
76 | }
77 | else
78 | num = 1;
79 | if (num == 0)
80 | {
81 | str = checkBox2.Content.ToString();
82 | list.Add(str);
83 | }
84 | }
85 | if (list.Count == 0)
86 | this.Combo.Text = AppResources.OPTION_NONE;
87 | else if (list.Count == 1)
88 | this.Combo.Text = str;
89 | else if (list.Count == this.Combo.Items.Count - 1)
90 | this.Combo.Text = AppResources.OPTION_ALL;
91 | else if (list.Count > 1)
92 | this.Combo.Text = AppResources.OPTION_MULTIPLE;
93 | CheckedComboEventArgs e1 = new CheckedComboEventArgs(list.ToArray());
94 | if (this.CheckedComboClickEvent == null)
95 | return;
96 | this.CheckedComboClickEvent((object) this, e1);
97 | }
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/AddInSpy/CheckedComboEventArgs.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.CheckedComboEventArgs
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using System;
8 |
9 | namespace AddInSpy
10 | {
11 | public class CheckedComboEventArgs : EventArgs
12 | {
13 | public string[] Names;
14 |
15 | public CheckedComboEventArgs(string[] names)
16 | {
17 | this.Names = names;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/AddInSpy/HelpWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.HelpWindow
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using AddInSpy.Properties;
8 | using System;
9 | using System.ComponentModel;
10 | using System.Diagnostics;
11 | using System.Windows;
12 | using System.Windows.Controls;
13 | using System.Windows.Markup;
14 | using System.Windows.Navigation;
15 | using AppResources = AddInSpy.Properties.Resources;
16 |
17 | namespace AddInSpy
18 | {
19 | public partial class HelpWindow : Window, IComponentConnector
20 | {
21 | private string helpFilePath;
22 |
23 | public HelpWindow()
24 | {
25 | this.InitializeComponent();
26 | }
27 |
28 | public HelpWindow(string helpFilePath)
29 | : this()
30 | {
31 | this.helpFilePath = helpFilePath;
32 | this.InitializeUI();
33 | this.webBrowser.Navigate(new Uri(helpFilePath));
34 | this.webBrowser.Navigated += new NavigatedEventHandler(this.webBrowser_Navigated);
35 | }
36 |
37 | private void InitializeUI()
38 | {
39 | this.buttonHomeText.Text = AppResources.BUTTON_HOME;
40 | this.buttonHome.ToolTip = (object) AppResources.BUTTON_HOME_TOOLTIP;
41 | this.buttonBackText.Text = AppResources.BUTTON_BACK;
42 | this.buttonBack.ToolTip = (object) AppResources.BUTTON_BACK_TOOLTIP;
43 | this.buttonForwardText.Text = AppResources.BUTTON_FORWARD;
44 | this.buttonForward.ToolTip = (object) AppResources.BUTTON_FORWARD_TOOLTIP;
45 | }
46 |
47 | private void webBrowser_Navigated(object sender, NavigationEventArgs e)
48 | {
49 | this.buttonBack.IsEnabled = this.webBrowser.CanGoBack;
50 | this.buttonForward.IsEnabled = this.webBrowser.CanGoForward;
51 | }
52 |
53 | private void buttonHome_Click(object sender, RoutedEventArgs e)
54 | {
55 | this.webBrowser.Navigate(new Uri(this.helpFilePath));
56 | }
57 |
58 | private void buttonBack_Click(object sender, RoutedEventArgs e)
59 | {
60 | this.webBrowser.GoBack();
61 | }
62 |
63 | private void buttonForward_Click(object sender, RoutedEventArgs e)
64 | {
65 | this.webBrowser.GoForward();
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/AddInSpy/Properties/Resources.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.Properties.Resources
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using System.CodeDom.Compiler;
8 | using System.ComponentModel;
9 | using System.Diagnostics;
10 | using System.Drawing;
11 | using System.Globalization;
12 | using System.Resources;
13 | using System.Runtime.CompilerServices;
14 |
15 | namespace AddInSpy.Properties
16 | {
17 | [DebuggerNonUserCode]
18 | [CompilerGenerated]
19 | [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
20 | internal class Resources
21 | {
22 | private static ResourceManager resourceMan;
23 | private static CultureInfo resourceCulture;
24 |
25 | [EditorBrowsable(EditorBrowsableState.Advanced)]
26 | internal static ResourceManager ResourceManager
27 | {
28 | get
29 | {
30 | if (object.ReferenceEquals((object) Resources.resourceMan, (object) null))
31 | Resources.resourceMan = new ResourceManager("AddInSpy.Properties.Resources", typeof (Resources).Assembly);
32 | return Resources.resourceMan;
33 | }
34 | }
35 |
36 | [EditorBrowsable(EditorBrowsableState.Advanced)]
37 | internal static CultureInfo Culture
38 | {
39 | get
40 | {
41 | return Resources.resourceCulture;
42 | }
43 | set
44 | {
45 | Resources.resourceCulture = value;
46 | }
47 | }
48 |
49 | internal static Icon AddInSpy
50 | {
51 | get
52 | {
53 | return (Icon) Resources.ResourceManager.GetObject("AddInSpy", Resources.resourceCulture);
54 | }
55 | }
56 |
57 | internal static string BUTTON_BACK
58 | {
59 | get
60 | {
61 | return Resources.ResourceManager.GetString("BUTTON_BACK", Resources.resourceCulture);
62 | }
63 | }
64 |
65 | internal static string BUTTON_BACK_TOOLTIP
66 | {
67 | get
68 | {
69 | return Resources.ResourceManager.GetString("BUTTON_BACK_TOOLTIP", Resources.resourceCulture);
70 | }
71 | }
72 |
73 | internal static string BUTTON_FORWARD
74 | {
75 | get
76 | {
77 | return Resources.ResourceManager.GetString("BUTTON_FORWARD", Resources.resourceCulture);
78 | }
79 | }
80 |
81 | internal static string BUTTON_FORWARD_TOOLTIP
82 | {
83 | get
84 | {
85 | return Resources.ResourceManager.GetString("BUTTON_FORWARD_TOOLTIP", Resources.resourceCulture);
86 | }
87 | }
88 |
89 | internal static string BUTTON_HELP
90 | {
91 | get
92 | {
93 | return Resources.ResourceManager.GetString("BUTTON_HELP", Resources.resourceCulture);
94 | }
95 | }
96 |
97 | internal static string BUTTON_HELP_TOOLTIP
98 | {
99 | get
100 | {
101 | return Resources.ResourceManager.GetString("BUTTON_HELP_TOOLTIP", Resources.resourceCulture);
102 | }
103 | }
104 |
105 | internal static string BUTTON_HOME
106 | {
107 | get
108 | {
109 | return Resources.ResourceManager.GetString("BUTTON_HOME", Resources.resourceCulture);
110 | }
111 | }
112 |
113 | internal static string BUTTON_HOME_TOOLTIP
114 | {
115 | get
116 | {
117 | return Resources.ResourceManager.GetString("BUTTON_HOME_TOOLTIP", Resources.resourceCulture);
118 | }
119 | }
120 |
121 | internal static string BUTTON_REFRESH
122 | {
123 | get
124 | {
125 | return Resources.ResourceManager.GetString("BUTTON_REFRESH", Resources.resourceCulture);
126 | }
127 | }
128 |
129 | internal static string BUTTON_REFRESH_TOOLTIP
130 | {
131 | get
132 | {
133 | return Resources.ResourceManager.GetString("BUTTON_REFRESH_TOOLTIP", Resources.resourceCulture);
134 | }
135 | }
136 |
137 | internal static string BUTTON_REPORT
138 | {
139 | get
140 | {
141 | return Resources.ResourceManager.GetString("BUTTON_REPORT", Resources.resourceCulture);
142 | }
143 | }
144 |
145 | internal static string BUTTON_REPORT_TOOLTIP
146 | {
147 | get
148 | {
149 | return Resources.ResourceManager.GetString("BUTTON_REPORT_TOOLTIP", Resources.resourceCulture);
150 | }
151 | }
152 |
153 | internal static string CHECKBOX_AUTOREFRESH
154 | {
155 | get
156 | {
157 | return Resources.ResourceManager.GetString("CHECKBOX_AUTOREFRESH", Resources.resourceCulture);
158 | }
159 | }
160 |
161 | internal static string CHECKBOX_AUTOREFRESH_TOOLTIP
162 | {
163 | get
164 | {
165 | return Resources.ResourceManager.GetString("CHECKBOX_AUTOREFRESH_TOOLTIP", Resources.resourceCulture);
166 | }
167 | }
168 |
169 | internal static string CHECKEDCOMBO_HOSTS_TOOLTIP
170 | {
171 | get
172 | {
173 | return Resources.ResourceManager.GetString("CHECKEDCOMBO_HOSTS_TOOLTIP", Resources.resourceCulture);
174 | }
175 | }
176 |
177 | internal static string CHECKEDCOMBO_REPORT_TOOLTIP
178 | {
179 | get
180 | {
181 | return Resources.ResourceManager.GetString("CHECKEDCOMBO_REPORT_TOOLTIP", Resources.resourceCulture);
182 | }
183 | }
184 |
185 | internal static string CHECKEDCOMBO_SCANS_TOOLTIP
186 | {
187 | get
188 | {
189 | return Resources.ResourceManager.GetString("CHECKEDCOMBO_SCANS_TOOLTIP", Resources.resourceCulture);
190 | }
191 | }
192 |
193 | internal static Bitmap Help
194 | {
195 | get
196 | {
197 | return (Bitmap) Resources.ResourceManager.GetObject("Help", Resources.resourceCulture);
198 | }
199 | }
200 |
201 | internal static string HELPFILE_NOT_FOUND
202 | {
203 | get
204 | {
205 | return Resources.ResourceManager.GetString("HELPFILE_NOT_FOUND", Resources.resourceCulture);
206 | }
207 | }
208 |
209 | internal static Bitmap HomeHS
210 | {
211 | get
212 | {
213 | return (Bitmap) Resources.ResourceManager.GetObject("HomeHS", Resources.resourceCulture);
214 | }
215 | }
216 |
217 | internal static string LABEL_HOSTS
218 | {
219 | get
220 | {
221 | return Resources.ResourceManager.GetString("LABEL_HOSTS", Resources.resourceCulture);
222 | }
223 | }
224 |
225 | internal static string LABEL_MACHINE
226 | {
227 | get
228 | {
229 | return Resources.ResourceManager.GetString("LABEL_MACHINE", Resources.resourceCulture);
230 | }
231 | }
232 |
233 | internal static string LABEL_OS
234 | {
235 | get
236 | {
237 | return Resources.ResourceManager.GetString("LABEL_OS", Resources.resourceCulture);
238 | }
239 | }
240 |
241 | internal static string LABEL_REPORT
242 | {
243 | get
244 | {
245 | return Resources.ResourceManager.GetString("LABEL_REPORT", Resources.resourceCulture);
246 | }
247 | }
248 |
249 | internal static string LABEL_SCANS
250 | {
251 | get
252 | {
253 | return Resources.ResourceManager.GetString("LABEL_SCANS", Resources.resourceCulture);
254 | }
255 | }
256 |
257 | internal static string LABEL_USER
258 | {
259 | get
260 | {
261 | return Resources.ResourceManager.GetString("LABEL_USER", Resources.resourceCulture);
262 | }
263 | }
264 |
265 | internal static Bitmap NavBack
266 | {
267 | get
268 | {
269 | return (Bitmap) Resources.ResourceManager.GetObject("NavBack", Resources.resourceCulture);
270 | }
271 | }
272 |
273 | internal static Bitmap NavForward
274 | {
275 | get
276 | {
277 | return (Bitmap) Resources.ResourceManager.GetObject("NavForward", Resources.resourceCulture);
278 | }
279 | }
280 |
281 | internal static string OPTION_ALL
282 | {
283 | get
284 | {
285 | return Resources.ResourceManager.GetString("OPTION_ALL", Resources.resourceCulture);
286 | }
287 | }
288 |
289 | internal static string OPTION_MULTIPLE
290 | {
291 | get
292 | {
293 | return Resources.ResourceManager.GetString("OPTION_MULTIPLE", Resources.resourceCulture);
294 | }
295 | }
296 |
297 | internal static string OPTION_NONE
298 | {
299 | get
300 | {
301 | return Resources.ResourceManager.GetString("OPTION_NONE", Resources.resourceCulture);
302 | }
303 | }
304 |
305 | internal static Bitmap Refresh
306 | {
307 | get
308 | {
309 | return (Bitmap) Resources.ResourceManager.GetObject("Refresh", Resources.resourceCulture);
310 | }
311 | }
312 |
313 | internal static Bitmap Report
314 | {
315 | get
316 | {
317 | return (Bitmap) Resources.ResourceManager.GetObject("Report", Resources.resourceCulture);
318 | }
319 | }
320 |
321 | internal static string REPORT_ADDINS
322 | {
323 | get
324 | {
325 | return Resources.ResourceManager.GetString("REPORT_ADDINS", Resources.resourceCulture);
326 | }
327 | }
328 |
329 | internal static string REPORT_ADDINS_TOOLTIP
330 | {
331 | get
332 | {
333 | return Resources.ResourceManager.GetString("REPORT_ADDINS_TOOLTIP", Resources.resourceCulture);
334 | }
335 | }
336 |
337 | internal static string REPORT_CONTEXT
338 | {
339 | get
340 | {
341 | return Resources.ResourceManager.GetString("REPORT_CONTEXT", Resources.resourceCulture);
342 | }
343 | }
344 |
345 | internal static string REPORT_CONTEXT_TOOLTIP
346 | {
347 | get
348 | {
349 | return Resources.ResourceManager.GetString("REPORT_CONTEXT_TOOLTIP", Resources.resourceCulture);
350 | }
351 | }
352 |
353 | internal static string SCAN_DISABLED_ITEMS
354 | {
355 | get
356 | {
357 | return Resources.ResourceManager.GetString("SCAN_DISABLED_ITEMS", Resources.resourceCulture);
358 | }
359 | }
360 |
361 | internal static string SCAN_DISABLED_ITEMS_TOOLTIP
362 | {
363 | get
364 | {
365 | return Resources.ResourceManager.GetString("SCAN_DISABLED_ITEMS_TOOLTIP", Resources.resourceCulture);
366 | }
367 | }
368 |
369 | internal static string SCAN_FORMREGIONS
370 | {
371 | get
372 | {
373 | return Resources.ResourceManager.GetString("SCAN_FORMREGIONS", Resources.resourceCulture);
374 | }
375 | }
376 |
377 | internal static string SCAN_FORMREGIONS_TOOLTIP
378 | {
379 | get
380 | {
381 | return Resources.ResourceManager.GetString("SCAN_FORMREGIONS_TOOLTIP", Resources.resourceCulture);
382 | }
383 | }
384 |
385 | internal static string SCAN_HKCU
386 | {
387 | get
388 | {
389 | return Resources.ResourceManager.GetString("SCAN_HKCU", Resources.resourceCulture);
390 | }
391 | }
392 |
393 | internal static string SCAN_HKCU_TOOLTIP
394 | {
395 | get
396 | {
397 | return Resources.ResourceManager.GetString("SCAN_HKCU_TOOLTIP", Resources.resourceCulture);
398 | }
399 | }
400 |
401 | internal static string SCAN_HKLM
402 | {
403 | get
404 | {
405 | return Resources.ResourceManager.GetString("SCAN_HKLM", Resources.resourceCulture);
406 | }
407 | }
408 |
409 | internal static string SCAN_HKLM_TOOLTIP
410 | {
411 | get
412 | {
413 | return Resources.ResourceManager.GetString("SCAN_HKLM_TOOLTIP", Resources.resourceCulture);
414 | }
415 | }
416 |
417 | internal static string SCAN_MANAGED_INTERFACES
418 | {
419 | get
420 | {
421 | return Resources.ResourceManager.GetString("SCAN_MANAGED_INTERFACES", Resources.resourceCulture);
422 | }
423 | }
424 |
425 | internal static string SCAN_MANAGED_INTERFACES_TOOLTIP
426 | {
427 | get
428 | {
429 | return Resources.ResourceManager.GetString("SCAN_MANAGED_INTERFACES_TOOLTIP", Resources.resourceCulture);
430 | }
431 | }
432 |
433 | internal static string SCAN_NATIVE_INTERFACES
434 | {
435 | get
436 | {
437 | return Resources.ResourceManager.GetString("SCAN_NATIVE_INTERFACES", Resources.resourceCulture);
438 | }
439 | }
440 |
441 | internal static string SCAN_NATIVE_INTERFACES_TOOLTIP
442 | {
443 | get
444 | {
445 | return Resources.ResourceManager.GetString("SCAN_NATIVE_INTERFACES_TOOLTIP", Resources.resourceCulture);
446 | }
447 | }
448 |
449 | internal static string SCAN_REMOTE
450 | {
451 | get
452 | {
453 | return Resources.ResourceManager.GetString("SCAN_REMOTE", Resources.resourceCulture);
454 | }
455 | }
456 |
457 | internal static string SCAN_REMOTE_TOOLTIP
458 | {
459 | get
460 | {
461 | return Resources.ResourceManager.GetString("SCAN_REMOTE_TOOLTIP", Resources.resourceCulture);
462 | }
463 | }
464 |
465 | internal static string SINGLE_ROW_TABLE_ITEM_COLUMN
466 | {
467 | get
468 | {
469 | return Resources.ResourceManager.GetString("SINGLE_ROW_TABLE_ITEM_COLUMN", Resources.resourceCulture);
470 | }
471 | }
472 |
473 | internal static string SINGLE_ROW_TABLE_ITEM_NUMBER
474 | {
475 | get
476 | {
477 | return Resources.ResourceManager.GetString("SINGLE_ROW_TABLE_ITEM_NUMBER", Resources.resourceCulture);
478 | }
479 | }
480 |
481 | internal static string SINGLE_ROW_TABLE_VALUE_COLUMN
482 | {
483 | get
484 | {
485 | return Resources.ResourceManager.GetString("SINGLE_ROW_TABLE_VALUE_COLUMN", Resources.resourceCulture);
486 | }
487 | }
488 |
489 | internal static string STATUS_ADDIN_COUNT
490 | {
491 | get
492 | {
493 | return Resources.ResourceManager.GetString("STATUS_ADDIN_COUNT", Resources.resourceCulture);
494 | }
495 | }
496 |
497 | internal static string STATUS_ALERT
498 | {
499 | get
500 | {
501 | return Resources.ResourceManager.GetString("STATUS_ALERT", Resources.resourceCulture);
502 | }
503 | }
504 |
505 | internal static string STATUS_OK
506 | {
507 | get
508 | {
509 | return Resources.ResourceManager.GetString("STATUS_OK", Resources.resourceCulture);
510 | }
511 | }
512 |
513 | internal static string WARNING
514 | {
515 | get
516 | {
517 | return Resources.ResourceManager.GetString("WARNING", Resources.resourceCulture);
518 | }
519 | }
520 |
521 | internal Resources()
522 | {
523 | }
524 | }
525 | }
526 |
--------------------------------------------------------------------------------
/AddInSpy/Properties/Settings.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.Properties.Settings
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using System.CodeDom.Compiler;
8 | using System.Configuration;
9 | using System.Runtime.CompilerServices;
10 |
11 | namespace AddInSpy.Properties
12 | {
13 | [CompilerGenerated]
14 | [GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
15 | internal sealed class Settings : ApplicationSettingsBase
16 | {
17 | private static Settings defaultInstance = (Settings) SettingsBase.Synchronized((SettingsBase) new Settings());
18 |
19 | public static Settings Default
20 | {
21 | get
22 | {
23 | Settings settings = Settings.defaultInstance;
24 | return settings;
25 | }
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/AddInSpy/WfDataProxyWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.WfDataProxyWindow
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using System;
8 | using System.ComponentModel;
9 | using System.Diagnostics;
10 | using System.Windows;
11 | using System.Windows.Forms.Integration;
12 | using System.Windows.Markup;
13 |
14 | namespace AddInSpy
15 | {
16 | public partial class WfDataProxyWindow : Window, IComponentConnector
17 | {
18 | public WfDataProxyWindow()
19 | {
20 | this.InitializeComponent();
21 | }
22 |
23 | protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
24 | {
25 | base.OnRenderSizeChanged(sizeInfo);
26 | int num1 = 14;
27 | int num2 = 0;
28 | if (Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 1)
29 | num2 = (int) (SystemParameters.HorizontalScrollBarHeight * 0.5);
30 | this.wfHost.Width = sizeInfo.NewSize.Width - 2.0 * SystemParameters.ResizeFrameVerticalBorderWidth + SystemParameters.VerticalScrollBarWidth - (double) num1;
31 | this.wfHost.Height = sizeInfo.NewSize.Height - 2.0 * SystemParameters.ResizeFrameHorizontalBorderHeight - SystemParameters.HorizontalScrollBarHeight - (double) num2;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/AddInSpy/WfGridProxyControl.xaml.cs:
--------------------------------------------------------------------------------
1 | // Decompiled with JetBrains decompiler
2 | // Type: AddInSpy.WfGridProxyControl
3 | // Assembly: AddInSpy, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null
4 | // MVID: 348DAB18-01AB-4E5E-BAAD-807E7B0E72BC
5 | // Assembly location: C:\Users\Jozef\Downloads\AddInSpy\AddInSpy.exe
6 |
7 | using System;
8 | using System.ComponentModel;
9 | using System.Diagnostics;
10 | using System.Windows;
11 | using System.Windows.Controls;
12 | using System.Windows.Forms.Integration;
13 | using System.Windows.Markup;
14 |
15 | namespace AddInSpy
16 | {
17 | public partial class WfGridProxyControl : UserControl, IComponentConnector
18 | {
19 | public WfGridProxyControl()
20 | {
21 | this.InitializeComponent();
22 | }
23 |
24 | protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
25 | {
26 | base.OnRenderSizeChanged(sizeInfo);
27 | int num1 = 0;
28 | int num2 = 12;
29 | if (Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 1)
30 | {
31 | num1 = (int) (SystemParameters.VerticalScrollBarWidth * 0.75);
32 | num2 = (int) (SystemParameters.HorizontalScrollBarHeight * 1.5);
33 | }
34 | this.wfHost.Width = sizeInfo.NewSize.Width - 2.0 * SystemParameters.ResizeFrameVerticalBorderWidth + SystemParameters.VerticalScrollBarWidth - (double) num1;
35 | this.wfHost.Height = sizeInfo.NewSize.Height - 2.0 * SystemParameters.ResizeFrameHorizontalBorderHeight - SystemParameters.HorizontalScrollBarHeight - (double) num2;
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/AddInSpy/addinspywindow.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
41 |
43 |
44 |
45 |
56 |
66 |
67 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/AddInSpy/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/AddInSpy/checkedcombocontrol.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/AddInSpy/helpwindow.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
27 |
38 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/AddInSpy/images/addinspy.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NetOfficeFw/AddInSpy/1e1105a344110bcd291dc09b18338663e4374bb0/AddInSpy/images/addinspy.ico
--------------------------------------------------------------------------------
/AddInSpy/images/help.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NetOfficeFw/AddInSpy/1e1105a344110bcd291dc09b18338663e4374bb0/AddInSpy/images/help.png
--------------------------------------------------------------------------------
/AddInSpy/images/homehs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NetOfficeFw/AddInSpy/1e1105a344110bcd291dc09b18338663e4374bb0/AddInSpy/images/homehs.png
--------------------------------------------------------------------------------
/AddInSpy/images/navback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NetOfficeFw/AddInSpy/1e1105a344110bcd291dc09b18338663e4374bb0/AddInSpy/images/navback.png
--------------------------------------------------------------------------------
/AddInSpy/images/navforward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NetOfficeFw/AddInSpy/1e1105a344110bcd291dc09b18338663e4374bb0/AddInSpy/images/navforward.png
--------------------------------------------------------------------------------
/AddInSpy/images/refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NetOfficeFw/AddInSpy/1e1105a344110bcd291dc09b18338663e4374bb0/AddInSpy/images/refresh.png
--------------------------------------------------------------------------------
/AddInSpy/images/report.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NetOfficeFw/AddInSpy/1e1105a344110bcd291dc09b18338663e4374bb0/AddInSpy/images/report.png
--------------------------------------------------------------------------------
/AddInSpy/lib/AddInScanEngine.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NetOfficeFw/AddInSpy/1e1105a344110bcd291dc09b18338663e4374bb0/AddInSpy/lib/AddInScanEngine.dll
--------------------------------------------------------------------------------
/AddInSpy/wfdataproxywindow.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/AddInSpy/wfgridproxycontrol.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Microsoft Public License (MS-PL)
2 |
3 | This license governs use of the accompanying software. If you use the software, you
4 | accept this license. If you do not accept the license, do not use the software.
5 |
6 | 1. Definitions
7 | The terms "reproduce," "reproduction," "derivative works," and "distribution" have the
8 | same meaning here as under U.S. copyright law.
9 | A "contribution" is the original software, or any additions or changes to the software.
10 | A "contributor" is any person that distributes its contribution under this license.
11 | "Licensed patents" are a contributor's patent claims that read directly on its contribution.
12 |
13 | 2. Grant of Rights
14 | (A) Copyright Grant- Subject to the terms of this license, including the license conditions
15 | and limitations in section 3, each contributor grants you a non-exclusive, worldwide,
16 | royalty-free copyright license to reproduce its contribution, prepare derivative works
17 | of its contribution, and distribute its contribution or any derivative works that you
18 | create.
19 | (B) Patent Grant- Subject to the terms of this license, including the license conditions
20 | and limitations in section 3, each contributor grants you a non-exclusive, worldwide,
21 | royalty-free license under its licensed patents to make, have made, use, sell, offer
22 | for sale, import, and/or otherwise dispose of its contribution in the software or
23 | derivative works of the contribution in the software.
24 |
25 | 3. Conditions and Limitations
26 | (A) No Trademark License- This license does not grant you rights to use any contributors'name,
27 | logo, or trademarks.
28 | (B) If you bring a patent claim against any contributor over patents that you claim are
29 | infringed by the software, your patent license from such contributor to the software
30 | ends automatically.
31 | (C) If you distribute any portion of the software, you must retain all copyright, patent,
32 | trademark, and attribution notices that are present in the software.
33 | (D) If you distribute any portion of the software in source code form, you may do so only
34 | under this license by including a complete copy of this license with your distribution.
35 | If you distribute any portion of the software in compiled or object code form, you may
36 | only do so under a license that complies with this license.
37 | (E) The software is licensed "as-is." You bear the risk of using it. The contributors
38 | give no express warranties, guarantees or conditions. You may have additional consumer
39 | rights under your local laws which this license cannot change. To the extent permitted
40 | under your local laws, the contributors exclude the implied warranties of merchantability,
41 | fitness for a particular purpose and non-infringement.
42 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AddInSpy
2 |
3 | AddInSpy is a diagnostic tool that discovers all registered Microsoft Office add-ins on a computer, and then reports as much information as it can about those add-ins. The tool works with all versions of all Microsoft Office applications that support COM add-ins, and all types of COM add-ins.
4 |
5 | Original AddInSpy tool was [developed by VSTO team][1] in Microsoft.
6 |
7 | This source code is based on disassembled version of original AddInSpy.
8 |
9 | ## Features
10 |
11 | **AddInSpy** is a standalone WPF application. **AddInSpy** is a simple front-end for the `AddInScanEngine.dll` – this DLL contains all the main scanning functionality.
12 |
13 | The scan engine scans the registry for Office add-ins, and reports the following details:
14 |
15 | * Whether the host application is running, and whether the add-in is loaded.
16 | * The type of each add-in: _VSTO_, _managed non-VSTO_, _native_.
17 | * `FriendlyName`, `ProgID`, `CLSID` and `LoadBehavior` of the add-in.
18 | * Manifest path, assembly path, and assembly strong name.
19 | * Registry hive (HKCU or HKLM) where the add-in is registered.
20 | * CLR version the add-in was built against.
21 | * VSTO runtime version used by the add-in.
22 | * Installed date, and publish version.
23 | * Which extensibility interfaces the add-in implements for Ribbon, custom taskpane, etc (including via VSTO wrappers).
24 | * Whether the add-in exposes itself for automation through the COMAddIns collection of the Office host application.
25 | * Whether the add-in is in the disabled items list for the current user, for each selected Office host application.
26 | * Whether the add-in is registered as the provider for any custom form regions.
27 | * Context information: machine name, user/domain name, OS details, VSTO environment variables.
28 |
29 | Reports can be displayed in a grid on-screen and can also be logged to an XML file for printing.
30 |
31 |
32 | ## License
33 |
34 | **AddInSpy** source code is licensed under [Microsoft Public License](LICENSE.txt)
35 |
36 | [1]: https://web.archive.org/web/20140411132835/http://blogs.msdn.com/b/vsto/archive/2008/10/02/diagnosing-troubleshooting-office-add-ins-with-addinspy-beth-massi.aspx
37 |
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | #
2 | # AddInSpy solution
3 | # AppVeyor configuration
4 | #
5 |
6 | version: 1.5.0.{build}
7 |
8 | branches:
9 | except:
10 | - gh-pages
11 |
12 | os: Windows Server 2012
13 |
14 | platform: Any CPU
15 | configuration:
16 | - Debug
17 | - Release
18 |
19 | build:
20 | project: AddInSpy.sln
21 | verbosity: detailed
22 |
23 | assembly_info:
24 | patch: true
25 | file: AssemblyInfo.*
26 | assembly_version: "{version}"
27 | assembly_file_version: "{version}"
28 | assembly_informational_version: "{version}"
29 |
30 | cache:
31 | - packages
--------------------------------------------------------------------------------