From 0ccbd46d8ff32bf584062710105bf64a8c2b35ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Hru=C5=A1ka?= Date: Fri, 21 Aug 2015 14:21:57 +0200 Subject: [PATCH] Initial commit. --- .gitattributes | 63 +++++++ .gitignore | 156 +++++++++++++++ WinProdKeyFind.sln | 22 +++ WinProdKeyFind/KeyDecoder.cs | 178 ++++++++++++++++++ WinProdKeyFind/MainForm.Designer.cs | 104 ++++++++++ WinProdKeyFind/MainForm.cs | 55 ++++++ WinProdKeyFind/MainForm.resx | 120 ++++++++++++ WinProdKeyFind/Program.cs | 20 ++ WinProdKeyFind/Properties/AssemblyInfo.cs | 36 ++++ .../Properties/Resources.Designer.cs | 63 +++++++ WinProdKeyFind/Properties/Resources.resx | 117 ++++++++++++ .../Properties/Settings.Designer.cs | 26 +++ WinProdKeyFind/Properties/Settings.settings | 7 + WinProdKeyFind/WinProdKeyFind.csproj | 122 ++++++++++++ WinProdKeyFind/app.config | 3 + 15 files changed, 1092 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 WinProdKeyFind.sln create mode 100644 WinProdKeyFind/KeyDecoder.cs create mode 100644 WinProdKeyFind/MainForm.Designer.cs create mode 100644 WinProdKeyFind/MainForm.cs create mode 100644 WinProdKeyFind/MainForm.resx create mode 100644 WinProdKeyFind/Program.cs create mode 100644 WinProdKeyFind/Properties/AssemblyInfo.cs create mode 100644 WinProdKeyFind/Properties/Resources.Designer.cs create mode 100644 WinProdKeyFind/Properties/Resources.resx create mode 100644 WinProdKeyFind/Properties/Settings.Designer.cs create mode 100644 WinProdKeyFind/Properties/Settings.settings create mode 100644 WinProdKeyFind/WinProdKeyFind.csproj create mode 100644 WinProdKeyFind/app.config diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1bc915c --- /dev/null +++ b/.gitignore @@ -0,0 +1,156 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets +!packages/*/build/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + + +#LightSwitch generated files +GeneratedArtifacts/ +_Pvt_Extensions/ +ModelManifest.xml + +# ========================= +# Windows detritus +# ========================= + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac desktop service store files +.DS_Store diff --git a/WinProdKeyFind.sln b/WinProdKeyFind.sln new file mode 100644 index 0000000..47cfa6c --- /dev/null +++ b/WinProdKeyFind.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30501.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinProdKeyFind", "WinProdKeyFind\WinProdKeyFind.csproj", "{8529692C-9F8E-4730-9173-E922E136D924}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8529692C-9F8E-4730-9173-E922E136D924}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8529692C-9F8E-4730-9173-E922E136D924}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8529692C-9F8E-4730-9173-E922E136D924}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8529692C-9F8E-4730-9173-E922E136D924}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/WinProdKeyFind/KeyDecoder.cs b/WinProdKeyFind/KeyDecoder.cs new file mode 100644 index 0000000..abd0918 --- /dev/null +++ b/WinProdKeyFind/KeyDecoder.cs @@ -0,0 +1,178 @@ +using System; +using System.Collections; +using Microsoft.Win32; + +namespace WinProdKeyFind +{ + public class KeyDecoder + { + public static string GetWindowsProductKey() + { + var key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, + RegistryView.Default); + const string keyPath = @"Software\Microsoft\Windows NT\CurrentVersion"; + var digitalProductId = (byte[])key.OpenSubKey(keyPath).GetValue("DigitalProductId"); + + var isWin8OrUp = + (Environment.OSVersion.Version.Major == 6 && System.Environment.OSVersion.Version.Minor >= 2) + || + (Environment.OSVersion.Version.Major > 6); + + var productKey = isWin8OrUp ? DecodeProductKeyWin8AndUp(digitalProductId) : DecodeProductKey(digitalProductId); + return productKey; + } + + public static string DecodeProductKey(byte[] digitalProductId) + { + const int keyStartIndex = 52; + const int keyEndIndex = keyStartIndex + 15; + var digits = new[] + { + 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', + 'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9', + }; + const int decodeLength = 29; + const int decodeStringLength = 15; + var decodedChars = new char[decodeLength]; + // Extract byte 52 to 67 inclusive. + var hexPid = new ArrayList(); + for (var i = keyStartIndex; i <= keyEndIndex; i++) + { + hexPid.Add(digitalProductId[i]); + } + for (var i = decodeLength - 1; i >= 0; i--) + { + // Every sixth char is a separator. + if ((i + 1) % 6 == 0) + { + decodedChars[i] = '-'; + } + else + { + // Do the actual decoding. + var digitMapIndex = 0; + for (var j = decodeStringLength - 1; j >= 0; j--) + { + var byteValue = (digitMapIndex << 8) | (byte)hexPid[j]; + hexPid[j] = (byte)(byteValue / 24); + digitMapIndex = byteValue % 24; + decodedChars[i] = digits[digitMapIndex]; + } + } + } + return new string(decodedChars); + } + + public static string DecodeProductKeyWin8AndUp(byte[] digitalProductId) + { + var key = String.Empty; + const int keyOffset = 52; + var isWin8 = (byte)((digitalProductId[66] / 6) & 1); + digitalProductId[66] = (byte)((digitalProductId[66] & 0xf7) | (isWin8 & 2) * 4); + + // Possible alpha-numeric characters in product key. + const string digits = "BCDFGHJKMPQRTVWXY2346789"; + int last = 0; + for (var i = 24; i >= 0; i--) + { + var current = 0; + for (var j = 14; j >= 0; j--) + { + current = current*256; + current = digitalProductId[j + keyOffset] + current; + digitalProductId[j + keyOffset] = (byte)(current/24); + current = current%24; + last = current; + } + key = digits[current] + key; + } + var keypart1 = key.Substring(1, last); + const string insert = "N"; + key = key.Substring(1).Replace(keypart1, keypart1 + insert); + if (last == 0) + key = insert + key; + for (var i = 5; i < key.Length; i += 6) + { + key = key.Insert(i, "-"); + } + return key; + } + //Got ot from http://www.csharphelp.com/board2/read.html?f=1&i=11982&t=11982 + private static System.DateTime ToDateTime(string dmtfDate) + { + //There is a utility called mgmtclassgen that ships with the .NET SDK that + //will generate managed code for existing WMI classes. It also generates + // datetime conversion routines like this one. + //Thanks to Chetan Parmar and dotnet247.com for the help. + var year = System.DateTime.Now.Year; + var month = 1; + var day = 1; + var hour = 0; + var minute = 0; + var second = 0; + var millisec = 0; + var dmtf = dmtfDate; + + if (string.IsNullOrEmpty(dmtf)) + { + return System.DateTime.MinValue; + } + + if ((dmtf.Length != 25)) + { + return System.DateTime.MinValue; + } + + var tempString = dmtf.Substring(0, 4); + if (("****" != tempString)) + { + year = System.Int32.Parse(tempString); + } + + tempString = dmtf.Substring(4, 2); + + if (("**" != tempString)) + { + month = System.Int32.Parse(tempString); + } + + tempString = dmtf.Substring(6, 2); + + if (("**" != tempString)) + { + day = System.Int32.Parse(tempString); + } + + tempString = dmtf.Substring(8, 2); + + if (("**" != tempString)) + { + hour = System.Int32.Parse(tempString); + } + + tempString = dmtf.Substring(10, 2); + + if (("**" != tempString)) + { + minute = System.Int32.Parse(tempString); + } + + tempString = dmtf.Substring(12, 2); + + if (("**" != tempString)) + { + second = System.Int32.Parse(tempString); + } + + tempString = dmtf.Substring(15, 3); + + if (("***" != tempString)) + { + millisec = System.Int32.Parse(tempString); + } + + var dateRet = new System.DateTime(year, month, day, hour, minute, second, millisec); + return dateRet; + } + } +} \ No newline at end of file diff --git a/WinProdKeyFind/MainForm.Designer.cs b/WinProdKeyFind/MainForm.Designer.cs new file mode 100644 index 0000000..3778313 --- /dev/null +++ b/WinProdKeyFind/MainForm.Designer.cs @@ -0,0 +1,104 @@ +namespace WinProdKeyFind +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.tbWindowsProductKey = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.btnCopyToClipboar = new System.Windows.Forms.Button(); + this.llWeb = new System.Windows.Forms.LinkLabel(); + this.SuspendLayout(); + // + // tbWindowsProductKey + // + this.tbWindowsProductKey.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.tbWindowsProductKey.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.tbWindowsProductKey.Location = new System.Drawing.Point(12, 35); + this.tbWindowsProductKey.Name = "tbWindowsProductKey"; + this.tbWindowsProductKey.ReadOnly = true; + this.tbWindowsProductKey.Size = new System.Drawing.Size(384, 26); + this.tbWindowsProductKey.TabIndex = 0; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 16); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(115, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Windows Product Key:"; + // + // btnCopyToClipboar + // + this.btnCopyToClipboar.Location = new System.Drawing.Point(269, 73); + this.btnCopyToClipboar.Name = "btnCopyToClipboar"; + this.btnCopyToClipboar.Size = new System.Drawing.Size(127, 23); + this.btnCopyToClipboar.TabIndex = 3; + this.btnCopyToClipboar.Text = "Copy key to clipboard"; + this.btnCopyToClipboar.UseVisualStyleBackColor = true; + this.btnCopyToClipboar.Click += new System.EventHandler(this.btnCopyToClipboar_Click); + // + // llWeb + // + this.llWeb.AutoSize = true; + this.llWeb.Location = new System.Drawing.Point(9, 78); + this.llWeb.Name = "llWeb"; + this.llWeb.Size = new System.Drawing.Size(115, 13); + this.llWeb.TabIndex = 9; + this.llWeb.TabStop = true; + this.llWeb.Text = "http://www.mrpear.net"; + this.llWeb.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llWeb_LinkClicked); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(408, 113); + this.Controls.Add(this.llWeb); + this.Controls.Add(this.btnCopyToClipboar); + this.Controls.Add(this.label1); + this.Controls.Add(this.tbWindowsProductKey); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.Name = "MainForm"; + this.Text = "Windows Product Key Finder"; + this.Shown += new System.EventHandler(this.MainForm_Shown); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox tbWindowsProductKey; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button btnCopyToClipboar; + private System.Windows.Forms.LinkLabel llWeb; + } +} + diff --git a/WinProdKeyFind/MainForm.cs b/WinProdKeyFind/MainForm.cs new file mode 100644 index 0000000..347cfed --- /dev/null +++ b/WinProdKeyFind/MainForm.cs @@ -0,0 +1,55 @@ +using System; +using System.Diagnostics; +using System.Windows.Forms; +using Timer = System.Timers.Timer; + +namespace WinProdKeyFind +{ + public partial class MainForm : Form + { + public MainForm() + { + InitializeComponent(); + } + + private void MainForm_Shown(object sender, EventArgs e) + { + GetKey(); + } + private void GetKey() + { + tbWindowsProductKey.Text = KeyDecoder.GetWindowsProductKey(); + } + + private void btnClose_Click(object sender, EventArgs e) + { + Close(); + } + + private string CopyBtnText; + private void btnCopyToClipboar_Click(object sender, EventArgs e) + { + tbWindowsProductKey.SelectionStart = 0; + tbWindowsProductKey.SelectionLength = tbWindowsProductKey.Text.Length; + tbWindowsProductKey.Copy(); + CopyBtnText = (sender as Button).Text; + (sender as Button).Text = @"Copied..."; + (sender as Button).Enabled = false; + var t = new Timer(750); + t.Elapsed += t_Elapsed; + t.Enabled = true; + t.AutoReset = false; + } + + void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e) + { + btnCopyToClipboar.Text = CopyBtnText; + btnCopyToClipboar.Enabled = true; + } + + private void llWeb_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + Process.Start("http://www.mrpear.net"); + } + } +} diff --git a/WinProdKeyFind/MainForm.resx b/WinProdKeyFind/MainForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/WinProdKeyFind/MainForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/WinProdKeyFind/Program.cs b/WinProdKeyFind/Program.cs new file mode 100644 index 0000000..fdc8e91 --- /dev/null +++ b/WinProdKeyFind/Program.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; + +namespace WinProdKeyFind +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/WinProdKeyFind/Properties/AssemblyInfo.cs b/WinProdKeyFind/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..70428b6 --- /dev/null +++ b/WinProdKeyFind/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WinProdKeyFind")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WinProdKeyFind")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("718e43bd-ec80-4af4-9cfd-967960522297")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/WinProdKeyFind/Properties/Resources.Designer.cs b/WinProdKeyFind/Properties/Resources.Designer.cs new file mode 100644 index 0000000..afa4289 --- /dev/null +++ b/WinProdKeyFind/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WinProdKeyFind.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WinProdKeyFind.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/WinProdKeyFind/Properties/Resources.resx b/WinProdKeyFind/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/WinProdKeyFind/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/WinProdKeyFind/Properties/Settings.Designer.cs b/WinProdKeyFind/Properties/Settings.Designer.cs new file mode 100644 index 0000000..c400176 --- /dev/null +++ b/WinProdKeyFind/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WinProdKeyFind.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/WinProdKeyFind/Properties/Settings.settings b/WinProdKeyFind/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/WinProdKeyFind/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/WinProdKeyFind/WinProdKeyFind.csproj b/WinProdKeyFind/WinProdKeyFind.csproj new file mode 100644 index 0000000..93194c6 --- /dev/null +++ b/WinProdKeyFind/WinProdKeyFind.csproj @@ -0,0 +1,122 @@ + + + + + Debug + AnyCPU + {8529692C-9F8E-4730-9173-E922E136D924} + WinExe + Properties + WinProdKeyFind + WinProdKeyFind + v4.0 + 512 + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + Form + + + MainForm.cs + + + + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + False + Microsoft .NET Framework 4 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + + \ No newline at end of file diff --git a/WinProdKeyFind/app.config b/WinProdKeyFind/app.config new file mode 100644 index 0000000..fcd0c93 --- /dev/null +++ b/WinProdKeyFind/app.config @@ -0,0 +1,3 @@ + + +