├── .gitattributes ├── .gitignore ├── App.config ├── CommandLink.cs ├── Configurer.cs ├── Diagnostic.cs ├── FileSystemRights.cs ├── Firewall.cs ├── InteropUtil.cs ├── LocalSecurityPolicy.cs ├── Main.Designer.cs ├── Main.cs ├── Main.resx ├── ProblemItem.Designer.cs ├── ProblemItem.cs ├── ProblemItem.resx ├── Program.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs └── Resources.resx ├── README.md ├── Resources ├── 109_AllAnnotations_Default_16x16_72.png ├── 109_AllAnnotations_Error_16x16_72.png ├── 109_AllAnnotations_Warning_16x16_72.png ├── Minus.bmp ├── Plus.bmp ├── StatusAnnotations_Play_16xLG.png ├── restarrow.gif ├── selarrow.gif ├── shield.gif └── tsnew.ico ├── ServiceHelper.cs ├── ServicesDetail.cs ├── TaskSchedulerConfig.csproj ├── TaskSchedulerConfig.sln ├── TaskSchedulerConfig.snk ├── TaskSchedulerConfigKey.pfx ├── UAC.cs ├── WizardForm.Designer.cs ├── WizardForm.cs ├── WizardForm.resx ├── app.manifest ├── license.md ├── packages.config └── publish ├── Application Files ├── TaskSchedulerConfig_2_6_0_0 │ ├── AeroWizard.dll.deploy │ ├── JetBrains.Annotations.dll.deploy │ ├── Microsoft.Win32.TaskScheduler.dll.deploy │ ├── TaskSchedulerConfig.application │ ├── TaskSchedulerConfig.exe.config.deploy │ ├── TaskSchedulerConfig.exe.deploy │ ├── TaskSchedulerConfig.exe.manifest │ ├── de │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── es │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── fr │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── it │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ └── zh-CN │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy ├── TaskSchedulerConfig_2_8_0_0 │ ├── AeroWizard.dll.deploy │ ├── Microsoft.Win32.TaskScheduler.dll.deploy │ ├── TaskSchedulerConfig.application │ ├── TaskSchedulerConfig.exe.config.deploy │ ├── TaskSchedulerConfig.exe.deploy │ ├── TaskSchedulerConfig.exe.manifest │ ├── de │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── es │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── fr │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── it │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── pl │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── ru │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ └── zh-CN │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy ├── TaskSchedulerConfig_2_8_1_0 │ ├── AeroWizard.dll.deploy │ ├── Microsoft.Win32.TaskScheduler.dll.deploy │ ├── TaskSchedulerConfig.application │ ├── TaskSchedulerConfig.exe.config.deploy │ ├── TaskSchedulerConfig.exe.deploy │ ├── TaskSchedulerConfig.exe.manifest │ ├── de │ │ ├── AeroWizard.resources.dll.deploy │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── es │ │ ├── AeroWizard.resources.dll.deploy │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── fr │ │ ├── AeroWizard.resources.dll.deploy │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── it │ │ ├── AeroWizard.resources.dll.deploy │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── pl │ │ ├── AeroWizard.resources.dll.deploy │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── ru │ │ ├── AeroWizard.resources.dll.deploy │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ └── zh-CN │ │ ├── AeroWizard.resources.dll.deploy │ │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy └── TaskSchedulerConfig_2_9_0_0 │ ├── AeroWizard.dll.deploy │ ├── Microsoft.Win32.TaskScheduler.dll.deploy │ ├── TaskSchedulerConfig.application │ ├── TaskSchedulerConfig.exe.config.deploy │ ├── TaskSchedulerConfig.exe.deploy │ ├── TaskSchedulerConfig.exe.manifest │ ├── de │ ├── AeroWizard.resources.dll.deploy │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── es │ ├── AeroWizard.resources.dll.deploy │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── fr │ ├── AeroWizard.resources.dll.deploy │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── it │ ├── AeroWizard.resources.dll.deploy │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── pl │ ├── AeroWizard.resources.dll.deploy │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ ├── ru │ ├── AeroWizard.resources.dll.deploy │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy │ └── zh-CN │ ├── AeroWizard.resources.dll.deploy │ └── Microsoft.Win32.TaskScheduler.resources.dll.deploy ├── TaskSchedulerConfig.application ├── publish.htm └── setup.exe /.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 | # behavior for ClickOnce files 49 | ############################################################################### 50 | *.manifest binary 51 | *.application binary 52 | *.deploy binary 53 | 54 | ############################################################################### 55 | # diff behavior for common document formats 56 | # 57 | # Convert binary document formats to text before diffing them. This feature 58 | # is only available from the command line. Turn it on by uncommenting the 59 | # entries below. 60 | ############################################################################### 61 | #*.doc diff=astextplain 62 | #*.DOC diff=astextplain 63 | #*.docx diff=astextplain 64 | #*.DOCX diff=astextplain 65 | #*.dot diff=astextplain 66 | #*.DOT diff=astextplain 67 | #*.pdf diff=astextplain 68 | #*.PDF diff=astextplain 69 | #*.rtf diff=astextplain 70 | #*.RTF diff=astextplain 71 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | project.fragment.lock.json 46 | artifacts/ 47 | 48 | *_i.c 49 | *_p.c 50 | *_i.h 51 | *.ilk 52 | *.meta 53 | *.obj 54 | *.pch 55 | *.pdb 56 | *.pgc 57 | *.pgd 58 | *.rsp 59 | *.sbr 60 | *.tlb 61 | *.tli 62 | *.tlh 63 | *.tmp 64 | *.tmp_proj 65 | *.log 66 | *.vspscc 67 | *.vssscc 68 | .builds 69 | *.pidb 70 | *.svclog 71 | *.scc 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opendb 81 | *.opensdf 82 | *.sdf 83 | *.cachefile 84 | *.VC.db 85 | *.VC.VC.opendb 86 | 87 | # Visual Studio profiler 88 | *.psess 89 | *.vsp 90 | *.vspx 91 | *.sap 92 | 93 | # TFS 2012 Local Workspace 94 | $tf/ 95 | 96 | # Guidance Automation Toolkit 97 | *.gpState 98 | 99 | # ReSharper is a .NET coding add-in 100 | _ReSharper*/ 101 | *.[Rr]e[Ss]harper 102 | *.DotSettings.user 103 | 104 | # JustCode is a .NET coding add-in 105 | .JustCode 106 | 107 | # TeamCity is a build add-in 108 | _TeamCity* 109 | 110 | # DotCover is a Code Coverage Tool 111 | *.dotCover 112 | 113 | # NCrunch 114 | _NCrunch_* 115 | .*crunch*.local.xml 116 | nCrunchTemp_* 117 | 118 | # MightyMoose 119 | *.mm.* 120 | AutoTest.Net/ 121 | 122 | # Web workbench (sass) 123 | .sass-cache/ 124 | 125 | # Installshield output folder 126 | [Ee]xpress/ 127 | 128 | # DocProject is a documentation generator add-in 129 | DocProject/buildhelp/ 130 | DocProject/Help/*.HxT 131 | DocProject/Help/*.HxC 132 | DocProject/Help/*.hhc 133 | DocProject/Help/*.hhk 134 | DocProject/Help/*.hhp 135 | DocProject/Help/Html2 136 | DocProject/Help/html 137 | 138 | # Click-Once directory 139 | !publish/ 140 | 141 | # Publish Web Output 142 | *.[Pp]ublish.xml 143 | *.azurePubxml 144 | # TODO: Comment the next line if you want to checkin your web deploy settings 145 | # but database connection strings (with potential passwords) will be unencrypted 146 | #*.pubxml 147 | *.publishproj 148 | 149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 150 | # checkin your Azure Web App publish settings, but sensitive information contained 151 | # in these scripts will be unencrypted 152 | PublishScripts/ 153 | 154 | # NuGet Packages 155 | *.nupkg 156 | # The packages folder can be ignored because of Package Restore 157 | **/packages/* 158 | # except build/, which is used as an MSBuild target. 159 | !**/packages/build/ 160 | # Uncomment if necessary however generally it will be regenerated when needed 161 | #!**/packages/repositories.config 162 | # NuGet v3's project.json files produces more ignoreable files 163 | *.nuget.props 164 | *.nuget.targets 165 | 166 | # Microsoft Azure Build Output 167 | csx/ 168 | *.build.csdef 169 | 170 | # Microsoft Azure Emulator 171 | ecf/ 172 | rcf/ 173 | 174 | # Windows Store app package directories and files 175 | AppPackages/ 176 | BundleArtifacts/ 177 | Package.StoreAssociation.xml 178 | _pkginfo.txt 179 | 180 | # Visual Studio cache files 181 | # files ending in .cache can be ignored 182 | *.[Cc]ache 183 | # but keep track of directories ending in .cache 184 | !*.[Cc]ache/ 185 | 186 | # Others 187 | ClientBin/ 188 | ~$* 189 | *~ 190 | *.dbmdl 191 | *.dbproj.schemaview 192 | *.jfm 193 | *.pfx 194 | *.publishsettings 195 | node_modules/ 196 | orleans.codegen.cs 197 | 198 | # Since there are multiple workflows, uncomment next line to ignore bower_components 199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 200 | #bower_components/ 201 | 202 | # RIA/Silverlight projects 203 | Generated_Code/ 204 | 205 | # Backup & report files from converting an old project file 206 | # to a newer Visual Studio version. Backup files are not needed, 207 | # because we have git ;-) 208 | _UpgradeReport_Files/ 209 | Backup*/ 210 | UpgradeLog*.XML 211 | UpgradeLog*.htm 212 | 213 | # SQL Server files 214 | *.mdf 215 | *.ldf 216 | 217 | # Business Intelligence projects 218 | *.rdl.data 219 | *.bim.layout 220 | *.bim_*.settings 221 | 222 | # Microsoft Fakes 223 | FakesAssemblies/ 224 | 225 | # GhostDoc plugin setting file 226 | *.GhostDoc.xml 227 | 228 | # Node.js Tools for Visual Studio 229 | .ntvs_analysis.dat 230 | 231 | # Visual Studio 6 build log 232 | *.plg 233 | 234 | # Visual Studio 6 workspace options file 235 | *.opt 236 | 237 | # Visual Studio LightSwitch build output 238 | **/*.HTMLClient/GeneratedArtifacts 239 | **/*.DesktopClient/GeneratedArtifacts 240 | **/*.DesktopClient/ModelManifest.xml 241 | **/*.Server/GeneratedArtifacts 242 | **/*.Server/ModelManifest.xml 243 | _Pvt_Extensions 244 | 245 | # Paket dependency manager 246 | .paket/paket.exe 247 | paket-files/ 248 | 249 | # FAKE - F# Make 250 | .fake/ 251 | 252 | # JetBrains Rider 253 | .idea/ 254 | *.sln.iml 255 | 256 | # CodeRush 257 | .cr/ 258 | 259 | # Python Tools for Visual Studio (PTVS) 260 | __pycache__/ 261 | *.pyc 262 | 263 | # Local build files 264 | *.cmd 265 | *.zip 266 | 267 | # Built help files 268 | docs/*.bat 269 | docs/*.exe 270 | docs/*.msh? -------------------------------------------------------------------------------- /App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CommandLink.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using System.Drawing; 4 | using System.Runtime.InteropServices; 5 | using System.Windows.Forms; 6 | 7 | namespace TaskSchedulerConfig 8 | { 9 | internal class CommandLink : Button 10 | { 11 | private const int BCM_SETNOTE = 0x00001609; 12 | private const int BCM_SETSHIELD = 0x0000160C; 13 | private const int BS_COMMANDLINK = 0x0000000E; 14 | 15 | private Color activeTextColor; 16 | private string description; 17 | private Label lblDescription; 18 | private Label lblText; 19 | private bool mActivated; 20 | private DisplayStyle mDisplayStyle = DisplayStyle.Arrow; 21 | private bool mMouseOver; 22 | private PictureBox picIcon; 23 | private string text; 24 | private Color textColor; 25 | 26 | public CommandLink() 27 | { 28 | if (IsVistaOrLater) 29 | { 30 | FlatStyle = FlatStyle.System; 31 | } 32 | else 33 | { 34 | BackColor = Parent?.BackColor ?? Color.White; 35 | FlatStyle = FlatStyle.Standard; 36 | Size = new Size(400, 72); 37 | TabStop = false; 38 | UseVisualStyleBackColor = false; 39 | 40 | textColor = Color.FromArgb(21, 28, 85); 41 | activeTextColor = Color.FromArgb(7, 74, 229); 42 | 43 | lblText = new Label { AutoSize = true, BackColor = Color.Transparent, ForeColor = textColor, Location = new Point(27, 10), Name = "lblText", Size = new Size(0, 21), TabIndex = 0 }; 44 | lblText.Font = new Font("Segoe UI", 12f, System.Drawing.FontStyle.Regular, GraphicsUnit.Point, (byte)0); 45 | lblText.ForeColor = Color.FromArgb((int)(byte)21, (int)(byte)28, (int)(byte)85); 46 | lblText.Click += (o, e) => OnClick(e); 47 | lblText.MouseLeave += CommandLink_MouseLeave; 48 | Controls.Add(lblText); 49 | 50 | lblDescription = new Label { BackColor = Color.Transparent, ForeColor = textColor, Location = new Point(33, 36), Name = "lblDescription", Size = new Size(364, 32), TabIndex = 1, UseCompatibleTextRendering = true }; 51 | lblDescription.Font = new Font("Segoe UI", 9f, System.Drawing.FontStyle.Regular, GraphicsUnit.Point, (byte)0); 52 | lblDescription.ForeColor = Color.FromArgb((int)(byte)21, (int)(byte)28, (int)(byte)85); 53 | lblDescription.Click += (o, e) => OnClick(e); 54 | lblDescription.MouseLeave += CommandLink_MouseLeave; 55 | Controls.Add(lblDescription); 56 | 57 | picIcon = new PictureBox { BackColor = Color.Transparent, Location = new Point(10, 13), Name = "picIcon", Size = new Size(16, 16), TabIndex = 2, TabStop = false }; 58 | picIcon.Image = Properties.Resources.restarrow; 59 | picIcon.Click += (o, e) => OnClick(e); 60 | picIcon.MouseLeave += CommandLink_MouseLeave; 61 | Controls.Add(picIcon); 62 | 63 | Click += (o, e) => Selected?.Invoke(this, EventArgs.Empty); 64 | MouseEnter += (o, e) => MouseOver = true; 65 | MouseLeave += CommandLink_MouseLeave; 66 | 67 | MouseOver = false; 68 | Activated = false; 69 | } 70 | } 71 | 72 | public CommandLink(DisplayStyle style, string text = null, string description = null) : this() 73 | { 74 | Style = style; 75 | Text = text; 76 | Description = description; 77 | } 78 | 79 | public event EventHandler Selected; 80 | 81 | public enum DisplayStyle 82 | { 83 | Arrow, 84 | Shield, 85 | } 86 | 87 | [Bindable(true)] 88 | [DefaultValue(null)] 89 | public string Description 90 | { 91 | get { return description; } 92 | set 93 | { 94 | if (IsVistaOrLater) 95 | SendMessage(Handle, BCM_SETNOTE, IntPtr.Zero, value); 96 | else 97 | lblDescription.Text = value; 98 | description = value; 99 | } 100 | } 101 | 102 | [Bindable(true)] 103 | [DefaultValue(DisplayStyle.Arrow)] 104 | public DisplayStyle Style 105 | { 106 | get { return mDisplayStyle; } 107 | set 108 | { 109 | bool bInv = false; 110 | if (mDisplayStyle != value) 111 | { 112 | bInv = true; 113 | } 114 | mDisplayStyle = value; 115 | if (bInv) 116 | { 117 | if (IsVistaOrLater) 118 | { 119 | if (mDisplayStyle == DisplayStyle.Shield) 120 | SendMessage(Handle, BCM_SETSHIELD, 0, 1); 121 | } 122 | else 123 | { 124 | base.FlatStyle = FlatStyle.Standard; 125 | 126 | switch (mDisplayStyle) 127 | { 128 | case DisplayStyle.Arrow: 129 | picIcon.Image = mMouseOver ? Properties.Resources.selarrow : Properties.Resources.restarrow; 130 | break; 131 | 132 | case DisplayStyle.Shield: 133 | picIcon.Image = Properties.Resources.shield; 134 | break; 135 | 136 | default: 137 | picIcon.Image = null; 138 | break; 139 | } 140 | Invalidate(); 141 | } 142 | } 143 | } 144 | } 145 | 146 | [Bindable(true)] 147 | [DefaultValue(null)] 148 | public override string Text 149 | { 150 | get { return text; } 151 | set 152 | { 153 | if (IsVistaOrLater) 154 | base.Text = value; 155 | else 156 | lblText.Text = value; 157 | text = value; 158 | } 159 | } 160 | 161 | protected override CreateParams CreateParams 162 | { 163 | get 164 | { 165 | CreateParams cp = base.CreateParams; 166 | if (IsVistaOrLater) 167 | cp.Style |= BS_COMMANDLINK; 168 | return cp; 169 | } 170 | } 171 | 172 | private bool Activated 173 | { 174 | get { return mActivated; } 175 | set 176 | { 177 | bool bInv = false; 178 | if (mActivated != value) 179 | bInv = true; 180 | mActivated = value; 181 | if (bInv) 182 | Invalidate(); 183 | } 184 | } 185 | 186 | private bool Default => (object.ReferenceEquals(FindForm().AcceptButton, this)); 187 | 188 | private static bool IsVistaOrLater => System.Environment.OSVersion.Version.Major > 5; 189 | 190 | private bool MouseOver 191 | { 192 | get { return mMouseOver; } 193 | set 194 | { 195 | bool bInv = false; 196 | if (mMouseOver != value) 197 | bInv = true; 198 | mMouseOver = value; 199 | if (!IsVistaOrLater && bInv) 200 | { 201 | if (mMouseOver == true) 202 | { 203 | lblText.ForeColor = activeTextColor; 204 | lblDescription.ForeColor = activeTextColor; 205 | if (Style == DisplayStyle.Arrow) 206 | picIcon.Image = Properties.Resources.selarrow; 207 | } 208 | else 209 | { 210 | lblText.ForeColor = textColor; 211 | lblDescription.ForeColor = textColor; 212 | if (Style == DisplayStyle.Arrow) 213 | { 214 | picIcon.Image = Properties.Resources.restarrow; 215 | } 216 | } 217 | Invalidate(); 218 | } 219 | } 220 | } 221 | 222 | public void ActivateChanged(bool activate) 223 | { 224 | Activated = activate; 225 | } 226 | 227 | protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) 228 | { 229 | if (IsVistaOrLater) 230 | { 231 | base.OnPaint(e); 232 | } 233 | else 234 | { 235 | if (base.FlatStyle != FlatStyle.Standard) 236 | base.FlatStyle = FlatStyle.Standard; 237 | 238 | Pen oPen = null; 239 | Rectangle r = ClientRectangle; 240 | Brush oBrush = null; 241 | 242 | r.Width -= 1; 243 | r.Height -= 1; 244 | 245 | if (MouseOver) 246 | { 247 | //the mouse is over is, draw the hover border 248 | oPen = new Pen(Color.FromArgb(198, 198, 198)); 249 | oBrush = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, BackColor, Color.FromArgb(246, 246, 246), System.Drawing.Drawing2D.LinearGradientMode.Vertical); 250 | } 251 | else if (Activated && Default) 252 | { 253 | //draw the blue border 254 | oPen = new Pen(Color.FromArgb(198, 244, 255)); 255 | r.Width -= 2; 256 | r.Height -= 2; 257 | r.X += 1; 258 | r.Y += 1; 259 | } 260 | 261 | if (oBrush == null) 262 | { 263 | e.Graphics.FillRectangle(new SolidBrush(BackColor), ClientRectangle); 264 | } 265 | else 266 | { 267 | e.Graphics.FillRectangle(oBrush, ClientRectangle); 268 | oBrush.Dispose(); 269 | } 270 | if (oPen != null) 271 | { 272 | oPen.LineJoin = System.Drawing.Drawing2D.LineJoin.Round; 273 | e.Graphics.DrawLine(oPen, r.X + 2, r.Y, r.X + r.Width - 2, r.Y); 274 | e.Graphics.DrawLine(oPen, r.X + r.Width - 2, r.Y, r.X + r.Width, r.Y + 2); 275 | e.Graphics.DrawLine(oPen, r.X + r.Width, r.Y + 2, r.X + r.Width, r.Y + r.Height - 2); 276 | e.Graphics.DrawLine(oPen, r.X + r.Width, r.Y + r.Height - 2, r.X + r.Width - 2, r.Y + r.Height); 277 | e.Graphics.DrawLine(oPen, r.X + r.Width - 2, r.Y + r.Height, r.X + 2, r.Y + r.Height); 278 | e.Graphics.DrawLine(oPen, r.X + 2, r.Y + r.Height, r.X, r.Y + r.Height - 2); 279 | e.Graphics.DrawLine(oPen, r.X, r.Y + r.Height - 2, r.X, r.Y + 2); 280 | e.Graphics.DrawLine(oPen, r.X, r.Y + 2, r.X + 2, r.Y); 281 | oPen.Dispose(); 282 | } 283 | } 284 | } 285 | 286 | [DllImport("user32.dll", CharSet = CharSet.Unicode)] 287 | private static extern int SendMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam); 288 | 289 | [DllImport("user32", CharSet = CharSet.Unicode)] 290 | private static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, string lParam); 291 | 292 | private void CommandLink_MouseLeave(object sender, System.EventArgs e) 293 | { 294 | MouseOver = ClientRectangle.Contains(PointToClient(Control.MousePosition)); 295 | Invalidate(); 296 | } 297 | } 298 | } 299 | -------------------------------------------------------------------------------- /Configurer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Linq; 5 | using System.Runtime.InteropServices; 6 | using System.Security.Principal; 7 | using System.ServiceProcess; 8 | using System.Text; 9 | 10 | namespace TaskSchedulerConfig 11 | { 12 | class Configurer 13 | { 14 | Validator v; 15 | 16 | public Configurer(Validator validator) 17 | { 18 | v = validator; 19 | } 20 | 21 | internal bool EnableFirewall(object obj) 22 | { 23 | v.Firewall.Enabled = true; 24 | return v.Firewall.Enabled; 25 | } 26 | 27 | internal bool EnableFirewallRule(object obj) 28 | { 29 | if (obj is Firewall.Rule) 30 | { 31 | v.Firewall.Rules[(Firewall.Rule)obj] = true; 32 | return v.Firewall.Rules[(Firewall.Rule)obj]; 33 | } 34 | throw new ArgumentException(); 35 | } 36 | 37 | internal bool RunRemoteRegistryService(object obj) 38 | { 39 | v.RemoteRegistryService.SetStartType(ServiceStartMode.Automatic); 40 | v.RemoteRegistryService.Start(); 41 | return v.RemoteRegistryServiceRunning; 42 | } 43 | } 44 | 45 | internal static class ServiceHelper 46 | { 47 | [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] 48 | [return: MarshalAs(UnmanagedType.Bool)] 49 | private static extern Boolean ChangeServiceConfig(IntPtr hService, UInt32 nServiceType, UInt32 nStartType, UInt32 nErrorControl, String lpBinaryPathName, String lpLoadOrderGroup, IntPtr lpdwTagId, [In] char[] lpDependencies, String lpServiceStartName, String lpPassword, String lpDisplayName); 50 | 51 | private const uint SERVICE_NO_CHANGE = 0xFFFFFFFF; 52 | 53 | public static void SetStartType(this ServiceController svc, ServiceStartMode mode) 54 | { 55 | using (var serviceHandle = svc.ServiceHandle) 56 | if (!ChangeServiceConfig(serviceHandle.DangerousGetHandle(), SERVICE_NO_CHANGE, (uint)mode, SERVICE_NO_CHANGE, null, null, IntPtr.Zero, null, null, null, null)) 57 | throw new ExternalException("Could not change service start type.", new Win32Exception()); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Diagnostic.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Security.AccessControl; 5 | using System.Security.Policy; 6 | using System.Security.Principal; 7 | using System.ServiceProcess; 8 | 9 | namespace TaskSchedulerConfig 10 | { 11 | class Diagnostics : List 12 | { 13 | ServicesDetail v; 14 | 15 | public Diagnostics(string server) 16 | { 17 | v = new ServicesDetail(server); 18 | 19 | Add(new Diagnostic 20 | { 21 | Name = "V1 Local Access: User has insufficient permissions to schedule tasks", 22 | Description = "To schedule a V1 task, the current user must be a member of the Administrators, Backup Operators, or Server Operators group on the local computer.", 23 | Condition = o => v.IsLocal, 24 | Troubleshooter = o => !(v.UserIsAdmin || v.UserIsBackupOperator || v.UserIsServerOperator), 25 | Resolution = new Resolution 26 | { 27 | Name = "Add user to Administrators group", 28 | Description = "Adding the user to the Administrators group will give it the right to schedule a V1 task.", 29 | RequiresConsent = true, 30 | RequiresElevation = true, 31 | Resolver = AddUserRole 32 | } 33 | }); 34 | 35 | Add(new Diagnostic 36 | { 37 | Name = "V1 Remote Access: Firewall is not enabled", 38 | Description = "Firewall must be enabled on local system.", 39 | Condition = o => v.IsLocal, 40 | Troubleshooter = o => !v.Firewall.Enabled, 41 | Resolution = new Resolution 42 | { 43 | Name = "Enable the firewall", 44 | Description = "Enabling the firewall allows for the Task Scheduler to secure its interactions.", 45 | RequiresElevation = true, 46 | Resolver = o => v.Firewall.Enabled = true 47 | } 48 | }); 49 | 50 | Add(new Diagnostic 51 | { 52 | Name = "V1 Remote Access: \"File and Printer Sharing\" rule on the firewall is not enabled", 53 | Description = "The \"File and Printer Sharing\" rule must be enabled in order for the Task Scheduler V1 to share its information with other computers.", 54 | Troubleshooter = o => !v.Firewall.Rules[Firewall.Rule.FileAndPrinterSharing], 55 | Resolution = new Resolution 56 | { 57 | Name = "Enable the \"File and Printer Sharing\" rule on the firewall", 58 | Description = "Enabling the \"File and Printer Sharing\" rule on the firewall allows the Task Scheduler V1 to share its information with other computers.", 59 | RequiresElevation = true, 60 | Resolver = o => v.Firewall.Rules[Firewall.Rule.FileAndPrinterSharing] = true 61 | } 62 | }); 63 | 64 | Add(new Diagnostic 65 | { 66 | Name = "V1 Local Access: Invalid permissions on the \"%windir%\\Tasks\" directory", 67 | Description = "Permissions on the \"%windir%\\Tasks\" directory do not allow V1 tasks to be created or edited by the current user", 68 | Condition = o => v.IsLocal, 69 | Troubleshooter = CheckTasksDirPerms, 70 | Resolution = new Resolution 71 | { 72 | Name = "Give current user access to \"%windir%\\Tasks\" directory", 73 | Description = "Giving the current user access to the \"%windir%\\Tasks\" directory will, in effect, give the user the right to create or edit V1 tasks.", 74 | RequiresConsent = true, 75 | RequiresElevation = true, 76 | Resolver = UpdateTasksDirPerms 77 | } 78 | }); 79 | 80 | if (System.Environment.OSVersion.Version.Major < 6) 81 | return; 82 | 83 | Add(new Diagnostic 84 | { 85 | Name = "V2 Local Access: User has insufficient permissions to schedule tasks", 86 | Description = "To schedule a V2 task, the current user must have \"Log on as a batch job\" and \"Log on as a service\" privileges.", 87 | Condition = o => v.IsLocal, 88 | //Troubleshooter = o => !v.UserRights[LocalSecurityAccountPrivileges.LogonAsBatchJob], 89 | RequiresElevation = true, 90 | Troubleshooter = o => !v.UserAccessRights[LocalSecurity.LsaSecurityAccessRights.BatchLogon], 91 | Resolution = new Resolution 92 | { 93 | Name = "Grant user \"Log on as a batch job\" right", 94 | Description = "Adding the \"Log on as a batch job\" right to the user will give it the right to schedule a V2 task on this and other computers.", 95 | RequiresConsent = true, 96 | RequiresElevation = true, 97 | Resolver = o => v.UserAccessRights[LocalSecurity.LsaSecurityAccessRights.BatchLogon] = true, 98 | } 99 | }); 100 | 101 | Add(new Diagnostic 102 | { 103 | Name = "V2 Remote Access: \"Remote Task Management\" rule on the firewall is not enabled", 104 | Description = "The \"Remote Task Management\" rule must be enabled in order for the Task Scheduler V2 to share its information with other computers.", 105 | Troubleshooter = o => !v.Firewall.Rules[Firewall.Rule.RemoteTaskManagement], 106 | Resolution = new Resolution 107 | { 108 | Name = "Enable the \"Remote Task Management\" rule on the firewall", 109 | Description = "Enabling the \"Remote Task Management\" rule on the firewall allows the Task Scheduler V2 to share its information with other computers.", 110 | RequiresElevation = true, 111 | Resolver = o => v.Firewall.Rules[Firewall.Rule.RemoteTaskManagement] = true 112 | } 113 | }); 114 | 115 | Add(new Diagnostic 116 | { 117 | Name = "V2 Remote Event Access: \"Remote Event Log Management\" rule on the firewall is not enabled", 118 | Description = "The \"Remote Event Log Management\" rule must be enabled in order for the Task Scheduler V2 to share its events with other computers.", 119 | Troubleshooter = o => !v.Firewall.Rules[Firewall.Rule.RemoteEventLogManagment], 120 | Resolution = new Resolution 121 | { 122 | Name = "Enable the \"Remote Event Log Management\" rule on the firewall", 123 | Description = "Enabling the \"Remote Event Log Management\" rule on the firewall allows the Task Scheduler V2 to share its events with other computers.", 124 | RequiresElevation = true, 125 | Resolver = o => v.Firewall.Rules[Firewall.Rule.RemoteEventLogManagment] = true 126 | } 127 | }); 128 | 129 | Add(new Diagnostic 130 | { 131 | Name = "V2 Remote Access: \"Remote Registry\" service is not running", 132 | Description = "The \"Remote Registry\" service must be running in order for the Task Scheduler V1 to connect to this computer.", 133 | Troubleshooter = o => !v.RemoteRegistryServiceRunning, 134 | Resolution = new Resolution 135 | { 136 | Name = "Automatically start the \"Remote Registry\" service", 137 | Description = "Starting the \"Remote Registry\" service and setting that service to start automatically will ensure that other V1 computers can connect to this computer.", 138 | RequiresElevation = true, 139 | Resolver = StartRemoteRegistryService 140 | } 141 | }); 142 | } 143 | 144 | public event EventHandler ShowMessage; 145 | 146 | public IEnumerable Issues 147 | { 148 | get 149 | { 150 | foreach (var item in this) 151 | { 152 | if (item.HasIssue.HasValue && item.HasIssue.Value) 153 | yield return item; 154 | } 155 | } 156 | } 157 | 158 | public IEnumerable NonIsseus 159 | { 160 | get 161 | { 162 | foreach (var item in this) 163 | { 164 | if (item.Condition(null) && item.HasIssue.HasValue && !item.HasIssue.Value) 165 | yield return item; 166 | } 167 | } 168 | } 169 | 170 | public string Server => v.Server; 171 | 172 | public IEnumerable UnRun 173 | { 174 | get 175 | { 176 | foreach (var item in this) 177 | { 178 | if (item.Condition(null) && !item.HasIssue.HasValue) 179 | yield return item; 180 | } 181 | } 182 | } 183 | 184 | private void ShowThisMessage(string s) { ShowMessage?.Invoke(this, new ShowMessageEventArgs(s)); } 185 | 186 | private void AddUserRole(object role) 187 | { 188 | throw new InvalidOperationException("You must add the current user manually to the Administrators, Backup Operators, or Server Operators group."); 189 | } 190 | 191 | private bool CheckTasksDirPerms(object obj) 192 | { 193 | ShowThisMessage("Checking permissions on \\Windows\\Tasks folder..."); 194 | var dir = new DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "Tasks")); 195 | return !DirectoryHasPermission(dir, FileSystemRights.FullControl); 196 | } 197 | 198 | private static bool DirectoryHasPermission(DirectoryInfo DirectoryPath, FileSystemRights AccessRight) 199 | { 200 | if (DirectoryPath != null) 201 | try { return (DirectoryPath.GetEffectiveRights(WindowsIdentity.GetCurrent()) & AccessRight) == AccessRight; } catch { } 202 | return false; 203 | } 204 | 205 | private void StartRemoteRegistryService(object obj) 206 | { 207 | if (v.RemoteRegistryService.Status != System.ServiceProcess.ServiceControllerStatus.Stopped && v.RemoteRegistryService.CanStop) 208 | { 209 | ShowThisMessage("Stopping \"Remote Registry\" service..."); 210 | v.RemoteRegistryService.Stop(); 211 | v.RemoteRegistryService.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(30)); 212 | } 213 | if (v.RemoteRegistryService.Status == System.ServiceProcess.ServiceControllerStatus.Stopped) 214 | { 215 | ShowThisMessage("Setting \"Remote Registry\" service to start automatically..."); 216 | v.RemoteRegistryService.SetStartType(System.ServiceProcess.ServiceStartMode.Automatic); 217 | ShowThisMessage("Starting \"Remote Registry\" service..."); 218 | v.RemoteRegistryService.Start(); 219 | v.RemoteRegistryService.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Running, TimeSpan.FromSeconds(30)); 220 | } 221 | } 222 | 223 | private void UpdateTasksDirPerms(object obj) 224 | { 225 | ShowThisMessage("Adding user rights to \\Windows\\Tasks folder..."); 226 | string dir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "Tasks"); 227 | var di = new DirectoryInfo(dir); 228 | var sec = di.GetAccessControl(AccessControlSections.Access); 229 | sec.AddAccessRule(new FileSystemAccessRule(v.sid, FileSystemRights.Modify, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow)); 230 | di.SetAccessControl(sec); 231 | } 232 | 233 | public class Diagnostic 234 | { 235 | public bool? HasIssue { get; set; } 236 | public bool? Resolved { get; set; } 237 | public string Name { get; set; } 238 | public string Description { get; set; } 239 | public Predicate Condition { get; set; } = o => true; 240 | public bool RequiresElevation { get; set; } = false; 241 | public Predicate Troubleshooter { get; set; } 242 | public Resolution Resolution { get; set; } 243 | } 244 | 245 | public class Resolution 246 | { 247 | public string Name { get; set; } 248 | public string Description { get; set; } 249 | public bool RequiresConsent { get; set; } = false; 250 | public bool RequiresElevation { get; set; } = false; 251 | public Action Resolver { get; set; } 252 | } 253 | 254 | public class ShowMessageEventArgs : EventArgs 255 | { 256 | public ShowMessageEventArgs(string msg) { Message = msg; } 257 | public string Message { get; } 258 | } 259 | } 260 | } 261 | -------------------------------------------------------------------------------- /FileSystemRights.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using System.Security.AccessControl; 4 | using System.Security.Principal; 5 | 6 | namespace System.IO 7 | { 8 | internal static class FileSystemInfoExtensions 9 | { 10 | /// Determines the effective access rights for the given user. 11 | /// The directory. 12 | /// The windows identity. 13 | /// Effective rights for identity. 14 | public static FileSystemRights GetEffectiveRights(this DirectoryInfo path, WindowsIdentity windowsIdentity) => 15 | GetEffectiveRights(path.GetAccessControl(), windowsIdentity); 16 | 17 | /// Determines the effective access rights for the given user. 18 | /// The file. 19 | /// The windows identity. 20 | /// Effective rights for identity. 21 | public static FileSystemRights GetEffectiveRights(this FileInfo path, WindowsIdentity windowsIdentity) => 22 | GetEffectiveRights(path.GetAccessControl(), windowsIdentity); 23 | 24 | private static T GetEffectiveRights(CommonObjectSecurity securityObject, WindowsIdentity windowsIdentity) where T : struct, IConvertible where R : AccessRule 25 | { 26 | if (!typeof(T).IsEnum) 27 | throw new ArgumentException($"Type '{typeof(T).FullName}' is not an enum"); 28 | if (windowsIdentity == null) 29 | throw new ArgumentNullException(nameof(windowsIdentity)); 30 | if (securityObject == null) 31 | throw new ArgumentNullException(nameof(securityObject)); 32 | 33 | int denyRights = 0, allowRights = 0; 34 | 35 | // get all access rules for the path - this works for a directory path as well as a file path 36 | AuthorizationRuleCollection authorizationRules = securityObject.GetAccessRules(true, true, typeof(SecurityIdentifier)); 37 | 38 | // get the user's sids 39 | List sids = new List(windowsIdentity.Groups.Select(g => g.Value)); 40 | sids.Insert(0, windowsIdentity.User.Value); 41 | 42 | // get the access rules filtered by the user's sids 43 | var rules = (from rule in authorizationRules.Cast() 44 | where sids.Contains(rule.IdentityReference.Value) 45 | select rule); 46 | 47 | System.Reflection.PropertyInfo pi = null; 48 | foreach (var rule in rules) 49 | { 50 | if (pi == null) 51 | pi = rule.GetType().GetProperty("AccessMask", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance, null, typeof(int), Type.EmptyTypes, null); 52 | if (pi == null) 53 | throw new InvalidOperationException("Unable to retrieve access mask."); 54 | if (rule.AccessControlType == AccessControlType.Deny) 55 | denyRights |= (int)pi.GetValue(rule, null); 56 | else 57 | allowRights |= (int)pi.GetValue(rule, null); 58 | } 59 | 60 | return (T)Enum.ToObject(typeof(T), (allowRights | denyRights) ^ denyRights); 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Firewall.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace TaskSchedulerConfig 4 | { 5 | class Firewall : IDisposable 6 | { 7 | internal static bool OldFirewall = Environment.OSVersion.Version.Major == 5; 8 | 9 | public enum Rule 10 | { 11 | FileAndPrinterSharing, 12 | RemoteEventLogManagment, 13 | RemoteTaskManagement 14 | } 15 | 16 | public Firewall(string server) 17 | { 18 | Rules = new RulesContainer(this); 19 | Type NetFwMgrType = Type.GetTypeFromProgID(OldFirewall ? "HNetCfg.FwMgr" : "HNetCfg.FwPolicy2", server, true); 20 | Instance = Activator.CreateInstance(NetFwMgrType); 21 | } 22 | 23 | public bool Enabled 24 | { 25 | get 26 | { 27 | if (OldFirewall) 28 | return Instance.LocalPolicy.CurrentProfile.FirewallEnabled; 29 | else 30 | { 31 | const int NET_FW_PROFILE2_DOMAIN = 1; 32 | const int NET_FW_PROFILE2_PRIVATE = 2; 33 | const int NET_FW_PROFILE2_PUBLIC = 4; 34 | 35 | bool result = false; 36 | int CurrentProfiles = Instance.CurrentProfileTypes; 37 | 38 | // The returned 'CurrentProfiles' bit mask can have more than 1 bit set if multiple profiles are active or current at the same time 39 | if ((CurrentProfiles & NET_FW_PROFILE2_DOMAIN) != 0 && Instance.FirewallEnabled(NET_FW_PROFILE2_DOMAIN)) 40 | result = true; 41 | if ((CurrentProfiles & NET_FW_PROFILE2_PRIVATE) != 0 && Instance.FirewallEnabled(NET_FW_PROFILE2_PRIVATE)) 42 | result = true; 43 | if ((CurrentProfiles & NET_FW_PROFILE2_PUBLIC) != 0 && Instance.FirewallEnabled(NET_FW_PROFILE2_PUBLIC)) 44 | result = true; 45 | return result; 46 | } 47 | } 48 | set 49 | { 50 | if (OldFirewall) 51 | { 52 | Instance.LocalPolicy.CurrentProfile.FirewallEnabled = value; 53 | } 54 | else 55 | { 56 | int CurrentProfiles = Instance.CurrentProfileTypes; 57 | Instance.set_FirewallEnabled(CurrentProfiles, value); 58 | } 59 | } 60 | } 61 | 62 | public RulesContainer Rules { get; private set; } 63 | 64 | public dynamic Instance { get; private set; } 65 | 66 | public class RulesContainer 67 | { 68 | private const int NET_FW_SERVICE_FILE_AND_PRINT = 0; 69 | private const string FPS = "File and Printer Sharing"; 70 | private const string RELM = "Remote Event Log Management"; 71 | private const string RSTM = "Remote Scheduled Tasks Management"; 72 | 73 | private Firewall firewall; 74 | 75 | internal RulesContainer(Firewall f) { firewall = f; } 76 | 77 | public bool this[Rule rule] 78 | { 79 | get 80 | { 81 | if (Firewall.OldFirewall) 82 | { 83 | switch (rule) 84 | { 85 | case Rule.FileAndPrinterSharing: 86 | return firewall.Instance.LocalPolicy.CurrentProfile.Services.Item(NET_FW_SERVICE_FILE_AND_PRINT).Enabled; 87 | default: 88 | throw new IndexOutOfRangeException("Unrecognized rule"); 89 | } 90 | } 91 | else 92 | { 93 | switch (rule) 94 | { 95 | case Rule.FileAndPrinterSharing: 96 | return firewall.Instance.IsRuleGroupCurrentlyEnabled(FPS); 97 | case Rule.RemoteEventLogManagment: 98 | return firewall.Instance.IsRuleGroupCurrentlyEnabled(RELM); 99 | case Rule.RemoteTaskManagement: 100 | return firewall.Instance.IsRuleGroupCurrentlyEnabled(RSTM); 101 | default: 102 | throw new IndexOutOfRangeException("Unrecognized rule"); 103 | } 104 | } 105 | } 106 | set 107 | { 108 | if (Firewall.OldFirewall) 109 | { 110 | switch (rule) 111 | { 112 | case Rule.FileAndPrinterSharing: 113 | firewall.Instance.LocalPolicy.CurrentProfile.Services.Item(NET_FW_SERVICE_FILE_AND_PRINT).Enabled = value; 114 | break; 115 | default: 116 | throw new IndexOutOfRangeException("Unrecognized rule"); 117 | } 118 | } 119 | else 120 | { 121 | switch (rule) 122 | { 123 | case Rule.FileAndPrinterSharing: 124 | firewall.Instance.EnableRuleGroup(firewall.Instance.CurrentProfileTypes, FPS, value); 125 | break; 126 | case Rule.RemoteEventLogManagment: 127 | firewall.Instance.EnableRuleGroup(firewall.Instance.CurrentProfileTypes, RELM, value); 128 | break; 129 | case Rule.RemoteTaskManagement: 130 | firewall.Instance.EnableRuleGroup(firewall.Instance.CurrentProfileTypes, RSTM, value); 131 | break; 132 | default: 133 | throw new IndexOutOfRangeException("Unrecognized rule"); 134 | } 135 | } 136 | } 137 | } 138 | } 139 | 140 | public void Dispose() 141 | { 142 | Rules = null; 143 | Instance = null; 144 | } 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /InteropUtil.cs: -------------------------------------------------------------------------------- 1 | namespace System.Runtime.InteropServices 2 | { 3 | internal static class InteropUtil 4 | { 5 | internal const int cbBuffer = 256; 6 | 7 | [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] 8 | public static T ToStructure(this IntPtr ptr) => (T)Marshal.PtrToStructure(ptr, typeof(T)); 9 | 10 | public static IntPtr StructureToPtr(object value) 11 | { 12 | IntPtr ret = Marshal.AllocHGlobal(Marshal.SizeOf(value)); 13 | Marshal.StructureToPtr(value, ret, false); 14 | return ret; 15 | } 16 | 17 | [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] 18 | public static void AllocString(ref IntPtr ptr, ref uint size) 19 | { 20 | FreeString(ref ptr, ref size); 21 | if (size == 0) size = cbBuffer; 22 | ptr = Marshal.AllocHGlobal(cbBuffer); 23 | } 24 | 25 | [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] 26 | public static void FreeString(ref IntPtr ptr, ref uint size) 27 | { 28 | if (ptr != IntPtr.Zero) 29 | { 30 | Marshal.FreeHGlobal(ptr); 31 | ptr = IntPtr.Zero; 32 | size = 0; 33 | } 34 | } 35 | 36 | [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] 37 | public static string GetString(IntPtr pString) => Marshal.PtrToStringUni(pString); 38 | 39 | [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] 40 | public static bool SetString(ref IntPtr ptr, ref uint size, string value = null) 41 | { 42 | string s = GetString(ptr); 43 | if (value == string.Empty) value = null; 44 | if (string.Compare(s, value) != 0) 45 | { 46 | FreeString(ref ptr, ref size); 47 | if (value != null) 48 | { 49 | ptr = Marshal.StringToHGlobalUni(value); 50 | size = (uint)value.Length + 1; 51 | } 52 | return true; 53 | } 54 | return false; 55 | } 56 | 57 | /// 58 | /// Converts an that points to a C-style array into a CLI array. 59 | /// 60 | /// Type of native structure used by the C-style array. 61 | /// Output type for the CLI array. must be able to convert to . 62 | /// The pointing to the native array. 63 | /// The number of items in the native array. 64 | /// An array of type containing the converted elements of the native array. 65 | public static T[] ToArray(this IntPtr ptr, int count) where S : IConvertible 66 | { 67 | IntPtr tempPtr; 68 | T[] ret = new T[count]; 69 | int stSize = Marshal.SizeOf(typeof(S)); 70 | for (int i = 0; i < count; i++) 71 | { 72 | tempPtr = new IntPtr(ptr.ToInt64() + (i * stSize)); 73 | S val = ToStructure(tempPtr); 74 | ret[i] = (T)Convert.ChangeType(val, typeof(T)); 75 | } 76 | return ret; 77 | } 78 | 79 | /// 80 | /// Converts an that points to a C-style array into a CLI array. 81 | /// 82 | /// Type of native structure used by the C-style array. 83 | /// The pointing to the native array. 84 | /// The number of items in the native array. 85 | /// An array of type containing the elements of the native array. 86 | public static T[] ToArray(this IntPtr ptr, int count) 87 | { 88 | IntPtr tempPtr; 89 | T[] ret = new T[count]; 90 | int stSize = Marshal.SizeOf(typeof(T)); 91 | for (int i = 0; i < count; i++) 92 | { 93 | tempPtr = new IntPtr(ptr.ToInt64() + (i * stSize)); 94 | ret[i] = ToStructure(tempPtr); 95 | } 96 | return ret; 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /Main.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TaskSchedulerConfig 2 | { 3 | partial class Main 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main)); 33 | this.localConfigList = new System.Windows.Forms.ListView(); 34 | this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); 35 | this.imageList1 = new System.Windows.Forms.ImageList(this.components); 36 | this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); 37 | this.cancelBtn = new System.Windows.Forms.Button(); 38 | this.panel1 = new System.Windows.Forms.Panel(); 39 | this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel(); 40 | this.fixItemBtn = new System.Windows.Forms.Button(); 41 | this.fixAllBtn = new System.Windows.Forms.Button(); 42 | this.retestBtn = new System.Windows.Forms.Button(); 43 | this.panel2 = new System.Windows.Forms.Panel(); 44 | this.flowLayoutPanel1.SuspendLayout(); 45 | this.flowLayoutPanel2.SuspendLayout(); 46 | this.panel2.SuspendLayout(); 47 | this.SuspendLayout(); 48 | // 49 | // localConfigList 50 | // 51 | this.localConfigList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 52 | this.columnHeader1}); 53 | this.localConfigList.Dock = System.Windows.Forms.DockStyle.Fill; 54 | this.localConfigList.FullRowSelect = true; 55 | this.localConfigList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; 56 | this.localConfigList.Location = new System.Drawing.Point(10, 10); 57 | this.localConfigList.MultiSelect = false; 58 | this.localConfigList.Name = "localConfigList"; 59 | this.localConfigList.Size = new System.Drawing.Size(444, 262); 60 | this.localConfigList.SmallImageList = this.imageList1; 61 | this.localConfigList.TabIndex = 0; 62 | this.localConfigList.UseCompatibleStateImageBehavior = false; 63 | this.localConfigList.View = System.Windows.Forms.View.Details; 64 | this.localConfigList.SelectedIndexChanged += new System.EventHandler(this.localConfigList_SelectedIndexChanged); 65 | // 66 | // columnHeader1 67 | // 68 | this.columnHeader1.Width = 440; 69 | // 70 | // imageList1 71 | // 72 | this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); 73 | this.imageList1.TransparentColor = System.Drawing.Color.Transparent; 74 | this.imageList1.Images.SetKeyName(0, "109_AllAnnotations_Error_16x16_72.png"); 75 | this.imageList1.Images.SetKeyName(1, "109_AllAnnotations_Default_16x16_72.png"); 76 | this.imageList1.Images.SetKeyName(2, "109_AllAnnotations_Info_16x16_72.png"); 77 | // 78 | // flowLayoutPanel1 79 | // 80 | this.flowLayoutPanel1.AutoSize = true; 81 | this.flowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 82 | this.flowLayoutPanel1.BackColor = System.Drawing.SystemColors.Control; 83 | this.flowLayoutPanel1.Controls.Add(this.cancelBtn); 84 | this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; 85 | this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; 86 | this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 283); 87 | this.flowLayoutPanel1.Name = "flowLayoutPanel1"; 88 | this.flowLayoutPanel1.Size = new System.Drawing.Size(549, 43); 89 | this.flowLayoutPanel1.TabIndex = 1; 90 | // 91 | // cancelBtn 92 | // 93 | this.cancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; 94 | this.cancelBtn.Location = new System.Drawing.Point(464, 10); 95 | this.cancelBtn.Margin = new System.Windows.Forms.Padding(10); 96 | this.cancelBtn.Name = "cancelBtn"; 97 | this.cancelBtn.Size = new System.Drawing.Size(75, 23); 98 | this.cancelBtn.TabIndex = 0; 99 | this.cancelBtn.Text = "Close"; 100 | this.cancelBtn.UseVisualStyleBackColor = true; 101 | this.cancelBtn.Click += new System.EventHandler(this.cancelBtn_Click); 102 | // 103 | // panel1 104 | // 105 | this.panel1.BackColor = System.Drawing.SystemColors.ControlDark; 106 | this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; 107 | this.panel1.Location = new System.Drawing.Point(0, 282); 108 | this.panel1.Name = "panel1"; 109 | this.panel1.Size = new System.Drawing.Size(549, 1); 110 | this.panel1.TabIndex = 2; 111 | // 112 | // flowLayoutPanel2 113 | // 114 | this.flowLayoutPanel2.AutoSize = true; 115 | this.flowLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 116 | this.flowLayoutPanel2.Controls.Add(this.fixItemBtn); 117 | this.flowLayoutPanel2.Controls.Add(this.fixAllBtn); 118 | this.flowLayoutPanel2.Controls.Add(this.retestBtn); 119 | this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Right; 120 | this.flowLayoutPanel2.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; 121 | this.flowLayoutPanel2.Location = new System.Drawing.Point(454, 0); 122 | this.flowLayoutPanel2.Name = "flowLayoutPanel2"; 123 | this.flowLayoutPanel2.Size = new System.Drawing.Size(95, 282); 124 | this.flowLayoutPanel2.TabIndex = 3; 125 | // 126 | // fixItemBtn 127 | // 128 | this.fixItemBtn.Enabled = false; 129 | this.fixItemBtn.Location = new System.Drawing.Point(10, 10); 130 | this.fixItemBtn.Margin = new System.Windows.Forms.Padding(10, 10, 10, 7); 131 | this.fixItemBtn.Name = "fixItemBtn"; 132 | this.fixItemBtn.Size = new System.Drawing.Size(75, 23); 133 | this.fixItemBtn.TabIndex = 0; 134 | this.fixItemBtn.Text = "Fix"; 135 | this.fixItemBtn.UseVisualStyleBackColor = true; 136 | this.fixItemBtn.Click += new System.EventHandler(this.fixItemBtn_Click); 137 | // 138 | // fixAllBtn 139 | // 140 | this.fixAllBtn.Enabled = false; 141 | this.fixAllBtn.Location = new System.Drawing.Point(10, 40); 142 | this.fixAllBtn.Margin = new System.Windows.Forms.Padding(10, 0, 10, 7); 143 | this.fixAllBtn.Name = "fixAllBtn"; 144 | this.fixAllBtn.Size = new System.Drawing.Size(75, 23); 145 | this.fixAllBtn.TabIndex = 1; 146 | this.fixAllBtn.Text = "Fix All"; 147 | this.fixAllBtn.UseVisualStyleBackColor = true; 148 | this.fixAllBtn.Click += new System.EventHandler(this.fixAllBtn_Click); 149 | // 150 | // retestBtn 151 | // 152 | this.retestBtn.Location = new System.Drawing.Point(10, 70); 153 | this.retestBtn.Margin = new System.Windows.Forms.Padding(10, 0, 10, 10); 154 | this.retestBtn.Name = "retestBtn"; 155 | this.retestBtn.Size = new System.Drawing.Size(75, 23); 156 | this.retestBtn.TabIndex = 2; 157 | this.retestBtn.Text = "Retest"; 158 | this.retestBtn.UseVisualStyleBackColor = true; 159 | this.retestBtn.Click += new System.EventHandler(this.retestBtn_Click); 160 | // 161 | // panel2 162 | // 163 | this.panel2.Controls.Add(this.localConfigList); 164 | this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; 165 | this.panel2.Location = new System.Drawing.Point(0, 0); 166 | this.panel2.Name = "panel2"; 167 | this.panel2.Padding = new System.Windows.Forms.Padding(10, 10, 0, 10); 168 | this.panel2.Size = new System.Drawing.Size(454, 282); 169 | this.panel2.TabIndex = 4; 170 | // 171 | // Main 172 | // 173 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 174 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 175 | this.BackColor = System.Drawing.SystemColors.Window; 176 | this.CancelButton = this.cancelBtn; 177 | this.ClientSize = new System.Drawing.Size(549, 326); 178 | this.Controls.Add(this.panel2); 179 | this.Controls.Add(this.flowLayoutPanel2); 180 | this.Controls.Add(this.panel1); 181 | this.Controls.Add(this.flowLayoutPanel1); 182 | this.Name = "Main"; 183 | this.Text = "Task Scheduler Configuration"; 184 | this.Load += new System.EventHandler(this.Main_Load); 185 | this.flowLayoutPanel1.ResumeLayout(false); 186 | this.flowLayoutPanel2.ResumeLayout(false); 187 | this.panel2.ResumeLayout(false); 188 | this.ResumeLayout(false); 189 | this.PerformLayout(); 190 | 191 | } 192 | 193 | #endregion 194 | 195 | private System.Windows.Forms.ListView localConfigList; 196 | private System.Windows.Forms.ColumnHeader columnHeader1; 197 | private System.Windows.Forms.ImageList imageList1; 198 | private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; 199 | private System.Windows.Forms.Button cancelBtn; 200 | private System.Windows.Forms.Panel panel1; 201 | private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; 202 | private System.Windows.Forms.Button fixItemBtn; 203 | private System.Windows.Forms.Button fixAllBtn; 204 | private System.Windows.Forms.Panel panel2; 205 | private System.Windows.Forms.Button retestBtn; 206 | } 207 | } 208 | -------------------------------------------------------------------------------- /Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Windows.Forms; 4 | 5 | using Res = TaskSchedulerConfig.Properties.Resources; 6 | 7 | namespace TaskSchedulerConfig 8 | { 9 | public partial class Main : Form 10 | { 11 | private ListViewItem curSel; 12 | private Configurer fixer; 13 | private Dictionary groups = new Dictionary(); 14 | private Validator v; 15 | 16 | public Main() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void AddLocalItem(string group, string text, object o = null, bool success = true, Predicate fix = null, object fixParam = null, string tooltip = null) 22 | { 23 | ListViewGroup g = null; 24 | if (!string.IsNullOrEmpty(group) && !groups.TryGetValue(group, out g)) 25 | groups.Add(group, g = localConfigList.Groups.Add(group, group)); 26 | var i = new ListViewItem(string.Format(text, o), success ? 1 : 0); 27 | if (fix != null) 28 | i.Tag = new FixInfo(fix, fixParam); 29 | i.ToolTipText = tooltip; 30 | localConfigList.Items.Add(i); 31 | i.Group = g; 32 | } 33 | 34 | private void cancelBtn_Click(object sender, EventArgs e) 35 | { 36 | Close(); 37 | } 38 | 39 | private void fixAllBtn_Click(object sender, EventArgs e) 40 | { 41 | foreach (ListViewItem item in localConfigList.Items) 42 | if (item.ImageIndex == 0 && item.Tag != null) 43 | if (RunFix(item.Tag as FixInfo)) 44 | item.ImageIndex = 1; 45 | } 46 | 47 | private void fixItemBtn_Click(object sender, EventArgs e) 48 | { 49 | var fi = curSel?.Tag as FixInfo; 50 | if (curSel != null && RunFix(fi)) 51 | curSel.ImageIndex = 1; 52 | } 53 | 54 | private void localConfigList_SelectedIndexChanged(object sender, EventArgs e) 55 | { 56 | curSel = localConfigList.SelectedItems.Count > 0 ? localConfigList.SelectedItems[0] : null; 57 | fixItemBtn.Enabled = (curSel?.ImageIndex ?? 1) == 0 && curSel?.Tag != null; 58 | } 59 | 60 | private void Main_Load(object sender, EventArgs e) 61 | { 62 | v = new Validator(null); 63 | fixer = new Configurer(v); 64 | retestBtn_Click(this, EventArgs.Empty); 65 | } 66 | 67 | private void retestBtn_Click(object sender, EventArgs e) 68 | { 69 | localConfigList.Items.Clear(); 70 | Predicate c = d => { try { return !d.Troubleshooter(null); } catch { return false; } }; 71 | Predicate f = d => { try { d.Resolution.Resolver(null); return !d.Troubleshooter(null); } catch { return false; } }; 72 | 73 | foreach (var d in new Diagnostics(null)) 74 | { 75 | AddLocalItem(null, d.Name, null, c(d), o => f(d), null, d.Description); 76 | } 77 | 78 | /*bool v2 = Environment.OSVersion.Version.Major > 5; 79 | 80 | AddLocalItem(Res.GroupGeneral, Res.UserIsAdmin, v.User, v.UserIsAdmin); 81 | AddLocalItem(Res.GroupGeneral, Res.UserIsServerOperator, v.User, v.UserIsServerOperator); 82 | AddLocalItem(Res.GroupGeneral, Res.UserIsBackupOperator, v.User, v.UserIsBackupOperator); 83 | AddLocalItem(Res.GroupGeneral, Res.FirewallEnabled, null, v.Firewall.Enabled, fixer.EnableFirewall); 84 | 85 | AddLocalItem(Res.GroupV1, Res.UserHasCorrectRights, v.User, v.UserIsAdmin || v.UserIsBackupOperator || v.UserIsServerOperator); 86 | AddLocalItem(Res.GroupV1, Res.FirewallRuleEnabled, Res.FileAndPrinterSharingRule, v.Firewall.Rules[Firewall.Rule.FileAndPrinterSharing], fixer.EnableFirewallRule, Firewall.Rule.FileAndPrinterSharing); 87 | 88 | if (v2) 89 | { 90 | AddLocalItem(Res.GroupV2, Res.FirewallRuleEnabled, Res.RemoteTaskManagementRule, v.Firewall.Rules[Firewall.Rule.RemoteTaskManagement], fixer.EnableFirewallRule, Firewall.Rule.RemoteTaskManagement); 91 | AddLocalItem(Res.GroupV2, Res.RemoteRegistryServiceRunning, null, v.RemoteRegistryServiceRunning, fixer.RunRemoteRegistryService); 92 | }*/ 93 | 94 | bool hasError = false; 95 | foreach (ListViewItem item in localConfigList.Items) 96 | if (item.ImageIndex == 0 && item.Tag != null) 97 | hasError = true; 98 | fixAllBtn.Enabled = hasError; 99 | } 100 | 101 | private bool RunFix(FixInfo fi) 102 | { 103 | if (fi != null) 104 | { 105 | try 106 | { 107 | return fi.meth(fi.methParam); 108 | } 109 | catch (Exception ex) 110 | { 111 | MessageBox.Show(this, ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error); 112 | } 113 | } 114 | return false; 115 | } 116 | 117 | private class FixInfo 118 | { 119 | public Predicate meth; 120 | public object methParam; 121 | 122 | public FixInfo(Predicate m, object p) 123 | { 124 | meth = m; methParam = p; 125 | } 126 | } 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /Main.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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 125 | AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w 126 | LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 127 | ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD0 128 | EgAAAk1TRnQBSQFMAgEBAwEAARgBAAEYAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA 129 | AwABEAMAAQEBAAEgBgABECIAAy0BRgNMAY0BXwFeAV8BxwNqAfADagHwAV8BXgFfAccDTAGNAy0BRiAA 130 | Ay0BRgNMAY0BXwFeAV8BxwNqAfADagHwAV8BXgFfAccDTAGNAy0BRiAAAzIBRgFXAVYBVwGNAWkBaAFp 131 | AccBbwFuAW8B8AFvAW4BbwHwAWkBaAFpAccBVwFWAVcBjQMyAUZYAAMXASADTAGMAYECfwH1AaUBoQGg 132 | Af8BvgG5AbcB/wHQAckByAH/AdAByQHIAf8BvgG5AbcB/wGlAaEBoAH/AYECfwH1A0wBjAMXASAQAAMX 133 | ASADTAGMAYECfwH1AaUBoQGgAf8BvgG5AbcB/wHQAckByAH/AdAByQHIAf8BvgG5AbcB/wGlAaEBoAH/ 134 | AYECfwH1A0wBjAMXASAQAAMZASADVgGMAYUCgwH1AaUBoQGgAf8BvgG5AbcB/wHQAckByAH/AdAByQHI 135 | Af8BvgG5AbcB/wGlAaEBoAH/AYUCgwH1A1YBjAMZASBMAAMXASADVAGjAZsClwH/AbQBrwG8Af8BhAF8 136 | AcQB/wFPAU0BwwH/AikBwAH/AikBwgH/AU8BTQHFAf8BhAGBAcgB/wG0Aa8BvQH/AZsClwH/A1QBowMX 137 | ASAIAAMXASADVAGjAZsClwH/AbIBuwGtAf8BeAGzAXsB/wE4AZ4BQQH/ARcBlwElAf8BFgGjASsB/wFA 138 | AbgBVQH/AYABwgGHAf8BswG8Aa4B/wGbApcB/wNUAaMDFwEgCAADGQEgAV8BXgFfAaMBmwKXAf8BxAGz 139 | Aa8B/wHJAZIBggH/AcMBaAFPAf8BlgFFASsB/wGWAUYBLAH/AaQBZQFQAf8BzAGPAYAB/wHFAbIBrgH/ 140 | AZsClwH/AV8BXgFfAaMDGQEgSAADTAGMAZsClwH/AaoBpQHEAf8BOwE5AbYB/wIAAawB/wIAAZ0B/wIA 141 | Aa8B/wIAAbgB/wIAAcEB/wIAAZsB/wE8ATkBtQH/AakBpAHHAf8BmwKXAf8DTAGMCAADTAGMAZsClwH/ 142 | AaYBvwGjAf8BQAGpAUoB/wEgAZIBJQH/AfcB/AH4Af8BswHrAb0B/wFDAZYBQgH/AQcBogEfAf8BBQGx 143 | AScB/wFIAb0BXQH/AakBwQGlAf8BmwKXAf8DTAGMCAADVgGMAZsClwH/AcsBsAGmAf8BvwFuAVMB/wG2 144 | AT8BGwH/AckBjAF3Af8B3QG7AbEB/wHdAbwBtAH/AbABZwFTAf8BmAExARMB/wHIAWwBVgH/Ac4BrAGj 145 | Af8BmwKXAf8DVgGMRAADLQFGAYECfwH1AbYBsAG9Af8BVAFSAbgB/wKAAdAB/wK7AegB/wIAAXYB/wIA 146 | AZ8B/wIAAbMB/wIBAaEB/wLXAewB/wKFAcsB/wE5ATgBsgH/AbQBrwG9Af8BgQJ/AfUDLQFGAy0BRgGB 147 | An8B9QGyAb0BrQH/AUUBswFRAf8BJwGcAS8B/wH8Af4B/AX/Af4D/wGjAeMBrgH/ARQBkAEdAf8BBQGo 148 | ASIB/wEFAa8BJgH/AUoBtwFaAf8BswG8Aa4B/wGBAn8B9QMtAUYDMgFGAYUCgwH1AcUBtgGxAf8BvQFu 149 | AVIB/wGxAUMBHgH/AbEBPwEaAf8B1wGqAZsB/wH6AvsB/wH6AvsB/wG5AXUBYwH/AZoBMgEUAf8BvwE/ 150 | AR8B/wHHAWwBVgH/AcQBsgGuAf8BhQKDAfUDMgFGQAADTAGNAaUBoQGgAf8BiAGEAcUB/wI7AcIB/wKr 151 | AdYD/wHsAf8CxwHXAf8CAAF2Af8CAAGWAf8C0gHcA/8B8gH/ArYB7gH/AgQBigH/AYUBgQHHAf8BpQGh 152 | AaAB/wNMAY0DTAGNAaUBoQGgAf8BegHCAYMB/wEvAagBPAH/AfgB/QH5Bf8BrQHmAbgB/wH+Af8B/gH/ 153 | AfcB/AH4Af8BQwGWAUIB/wEMAZ4BHwH/AQUBpQEhAf8BBQGpASMB/wGCAbsBhQH/AaUBoQGgAf8DTAGN 154 | AVcBVgFXAY0BpQGhAaAB/wHMAZoBhwH/AbIBSAEgAf8BrwFDAR0B/wGwAT8BGgH/AdcBqgGbAf8B0QHS 155 | AdQB/wH6AvsB/wG4AXUBYwH/AZUBMAETAf8BugE+AR4B/wG6AT8BHgH/AckBkAGBAf8BpQGhAaAB/wFX 156 | AVYBVwGNQAABXwFeAV8BxwG+AbkBtwH/AWEBXwHHAf8CAAGrAf8CHgG9Af8CqwHUA/8B6QH/Ar0B0QH/ 157 | Ar0BzwH/AvcB2gH/ArYB4wH/AhkBnAH/AgABugH/AU8BTQHCAf8BvgG5AbcB/wFfAV4BXwHHAV8BXgFf 158 | AccBvgG5AbcB/wFOAcUBYAH/AeUB8QHlBf8B8wH8AfUB/wEnAaIBMwH/AbIB5wG8Af8B/QH+Af0B/wGn 159 | AeUBsgH/ARgBkQEgAf8BBwGfAR0B/wEFAZ8BHgH/AUQBqwFRAf8BvgG5AbcB/wFfAV4BXwHHAWkBaAFp 160 | AccBvgG5AbcB/wHKAXwBXgH/Ab8BVwEwAf8BsAFGASAB/wGsAT4BGQH/AdcBqgGbAf8B1wHYAdoB/wH6 161 | AvsB/wG9AYMBcQH/AZQBMAETAf8BtwE/ARwB/wGzAT4BGwH/AbwBZwFNAf8BvgG5AbcB/wFpAWgBaQHH 162 | QAADagHwAdAByQHIAf8BTgFNAcoB/wIAAbQB/wIAAaoB/wJBAb4B/wKdAdMB/wL4AeYB/wL1AeUB/wKo 163 | AdwB/wITAZcB/wIAAakB/wIAAa0B/wIqAb0B/wHQAckByAH/A2oB8ANqAfAB0AHJAcgB/wFAAcIBWgH/ 164 | AY0B4QGgAf8B6QHzAekB/wFGAbMBUwH/ARcBqgEqAf8BeQHOAYgB/wH+Af8B/gH/AfgB/QH4Af8BQwGa 165 | AUQB/wESAZoBIQH/AQUBmAEaAf8BGQGcASoB/wHQAckByAH/A2oB8AFvAW4BbwHwAdAByQHIAf8BygFr 166 | AUYB/wHKAWIBOwH/AcMBWwEzAf8BsAFEAR0B/wHXAaoBmwH/AdcB2AHaAf8B+gL7Af8BwQGOAXwB/wGV 167 | ATEBEgH/AbIBPwEaAf8BrQE+ARoB/wGwAUoBKQH/AdAByQHIAf8BbwFuAW8B8EAAA2oB8AHQAckByAH/ 168 | AVUBVAHOAf8CLQHKAf8CAAG5Af8CAgG2Af8CkAHaAf8C9AHhAf8C9gHoAf8CkQHUAf8CAAF4Af8CAAGd 169 | Af8CAAGyAf8CKwG8Af8B0AHJAcgB/wNqAfADagHwAdAByQHIAf8BPwHCAVwB/wE3AcMBVQH/ATgBwgFW 170 | Af8BJwGzAUUB/wEaAaoBMwH/ASUBtQE9Af8BsgHnAbwB/wH9Af4B/QH/AaUB4wGvAf8BHAGSASMB/wEH 171 | AZUBFgH/ARwBmQEoAf8B0AHJAcgB/wNqAfABbwFuAW8B8AHQAckByAH/AdEBcAFMAf8BzgFoAUAB/wHP 172 | AWgBQQH/AcoBYQE5Af8B1wGqAZsB/wHXAdgB2gH/AfoC+wH/AboBgwFvAf8BlAEvARAB/wGwAUABGgH/ 173 | AaoBPwEaAf8BrgFLASkB/wHQAckByAH/AW8BbgFvAfBAAAFfAV4BXwHHAb4BuQG3Af8BegF3AdMB/wET 174 | ARIByQH/AjEB0QH/Ap0B5wP/AfkB/wL4AfAB/wHlAeQB3AH/AvoB5QH/AowBzwH/AgABeQH/AgABlAH/ 175 | AVcBVAHAAf8BvgG5AbcB/wFfAV4BXwHHAV8BXgFfAccBvgG5AbcB/wFkAcoBeQH/ATUBxAFVAf8BMgHA 176 | AVIB/wEwAbsBTwH/AS4BtgFMAf8BLAG0AUgB/wFsAdEBgAH/AfwB/gH8Af8B+AH9AfkB/wFLAaQBTgH/ 177 | AREBlgEjAf8BSwGnAVUB/wG+AbkBtwH/AV8BXgFfAccBaQFoAWkBxwG+AbkBtwH/AdcBjQFuAf8B1AFv 178 | AUYB/wHUAW4BRgH/AdUBbgFGAf8B1wGqAZsB/wH2AeQB3QH/AfoC+wH/AbQBdAFeAf8BqAE+ARkB/wGu 179 | AUQBHgH/Aa0BRAEeAf8BugFsAVAB/wG+AbkBtwH/AWkBaAFpAcdAAANMAY0BpQGhAaAB/wGmAaEB0gH/ 180 | AmoB5QH/AqAB6Qn/AmkB3AH/Al0BzQH/AfcB9QHjA/8B8AH/Ao8B0AH/AjEBiwH/AYwBiAHFAf8BpQGh 181 | AaAB/wNMAY0DTAGNAaUBoQGgAf8BkwHRAZ0B/wE7AcsBXAH/ATgByAFZAf8BNgHDAVQB/wEyAb4BUAH/ 182 | AS8BuQFNAf8BMQG8AU4B/wGSAdwBoQX/AcgB7wHPAf8BJAGfATcB/wGIAbsBigH/AaUBoQGgAf8DTAGN 183 | AVcBVgFXAY0BpQGhAaAB/wHXAawBmwH/Ad0BdAFJAf8B2wF2AU0B/wHZAXUBTQH/AegBfgFWAf8B7QFy 184 | AUQB/wHlAXEBRgH/Ad4BXAEsAf8BzQFkATsB/wHGAV8BOAH/AcEBWwE0Af8BzAGbAYkB/wGlAaEBoAH/ 185 | AVcBVgFXAY1AAAMtAUYBgQJ/AfUBvAG2AcEB/wGEAYMB4AH/At0B9wX/AoIB5wH/AgYBxgH/AQUBBgHD 186 | Af8CbwHWA/8B5gH/AtkB5AH/AWUBYwHNAf8BtgGwAb0B/wGBAn8B9QMtAUYDLQFGAYECfwH1AbgBwwG1 187 | Af8BbAHSAYMB/wE+Ac4BXwH/ATwBywFbAf8BOQHGAVcB/wE1AcEBVAH/ATIBvQFPAf8BQgHFAVsB/wG0 188 | AegBvgH/Af0B/gH9Af8BXgG6AWkB/wG1Ab0BsAH/AYECfwH1Ay0BRgMyAUYBhQKDAfUByAG4AbQB/wHd 189 | AZwBggH/AeUBfAFQAf8B4QF7AVIB/wH0AZMBbAH/AfUB5AHdAv8B+QHyAf8B7gGLAWQB/wHPAWQBOQH/ 190 | Ac0BaQFAAf8BzQGGAWgB/wHFAbUBsAH/AYUCgwH1AzIBRkQAA0wBjAGbApcB/wG6AbUBzQH/AXwBegHf 191 | Af8CiwHwAf8BGwEcAdcB/wI2Ad0B/wIzAdcB/wEWARcBzAH/AmoB2gH/AWIBYAHQAf8BrwGqAccB/wGb 192 | ApcB/wNMAYwIAANMAYwBmwKXAf8BswHOAbQB/wFtAdYBhQH/AT8B0gFgAf8BPgHNAV8B/wE8AcoBWwH/ 193 | ATgBxQFXAf8BNgHBAVMB/wGcAeEBqgH/AbcB4wG+Af8BrwHHAa0B/wGbApcB/wNMAYwIAANWAYwBmwKX 194 | Af8B0wG5AbAB/wHhAaABhwH/Ae8BgwFYAf8B9wGcAXcJ/wH0AZQBbQH/AdUBbAFBAf8B1AGLAW0B/wHP 195 | AbQBqgH/AZsClwH/A1YBjEgAAxcBIANUAaMBmwKXAf8BvAG2AcIB/wGsAacB1QH/AYgBhQHYAf8BZQFj 196 | AdYB/wFfAV0B0QH/AXABbgHNAf8BlAGQAcoB/wG3AbIBvgH/AZsClwH/A1QBowMXASAIAAMXASADVAGj 197 | AZsClwH/AboBwgG3Af8BmgHUAaMB/wFrAdUBgwH/AUwB0wFqAf8BSQHPAWYB/wFoAcoBegH/AY4BygGW 198 | Af8BtgHDAbIB/wGbApcB/wNUAaMDFwEgCAADGQEgAV8BXgFfAaMBmwKXAf8ByAG4AbQB/wHbAbABoAH/ 199 | AeoBmgF1Af8B8AGRAWoB/wHwAZEBagH/AeYBigFjAf8B1gGmAZMB/wHGAbcBsgH/AZsClwH/AV8BXgFf 200 | AaMDGQEgTAADFwEgA0wBjAGBAn8B9QGlAaEBoAH/Ab4BuQG3Af8B0AHJAcgB/wHQAckByAH/Ab4BuQG3 201 | Af8BpQGhAaAB/wGBAn8B9QNMAYwDFwEgEAADFwEgA0wBjAGBAn8B9QGlAaEBoAH/Ab4BuQG3Af8B0AHJ 202 | AcgB/wHQAckByAH/Ab4BuQG3Af8BpQGhAaAB/wGBAn8B9QNMAYwDFwEgEAADGQEgA1YBjAGFAoMB9QGl 203 | AaEBoAH/Ab4BuQG3Af8B0AHJAcgB/wHQAckByAH/Ab4BuQG3Af8BpQGhAaAB/wGFAoMB9QNWAYwDGQEg 204 | WAADLQFGA0wBjQFfAV4BXwHHA2oB8ANqAfABXwFeAV8BxwNMAY0DLQFGIAADLQFGA0wBjQFfAV4BXwHH 205 | A2oB8ANqAfABXwFeAV8BxwNMAY0DLQFGIAADMgFGAVcBVgFXAY0BaQFoAWkBxwFvAW4BbwHwAW8BbgFv 206 | AfABaQFoAWkBxwFXAVYBVwGNAzIBRlAAAUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcA 207 | A/8BAAHwAQ8B8AEPAfABDwIAAcABAwHAAQMBwAEDAgABgAEBAYABAQGAAQECAAGAAQEBgAEBAYABAUIA 208 | AYABAQGAAQEBgAEBAgABgAEBAYABAQGAAQECAAHAAQMBwAEDAcABAwIAAfABDwHwAQ8B8AEPAgAL 209 | 210 | 211 | -------------------------------------------------------------------------------- /ProblemItem.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace TaskSchedulerConfig 2 | { 3 | partial class ProblemItem 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Component Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.title = new System.Windows.Forms.Label(); 32 | this.desc = new System.Windows.Forms.Label(); 33 | this.resolution = new System.Windows.Forms.CheckBox(); 34 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 35 | this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); 36 | this.label1 = new System.Windows.Forms.Label(); 37 | this.pictureBox2 = new System.Windows.Forms.PictureBox(); 38 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 39 | this.tableLayoutPanel1.SuspendLayout(); 40 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); 41 | this.SuspendLayout(); 42 | // 43 | // title 44 | // 45 | this.title.Anchor = System.Windows.Forms.AnchorStyles.Left; 46 | this.title.AutoSize = true; 47 | this.title.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 48 | this.title.Location = new System.Drawing.Point(19, 2); 49 | this.title.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 50 | this.title.Name = "title"; 51 | this.title.Size = new System.Drawing.Size(97, 13); 52 | this.title.TabIndex = 0; 53 | this.title.Text = "Root cause title"; 54 | // 55 | // desc 56 | // 57 | this.desc.Location = new System.Drawing.Point(19, 17); 58 | this.desc.Name = "desc"; 59 | this.desc.Size = new System.Drawing.Size(354, 32); 60 | this.desc.TabIndex = 1; 61 | this.desc.Text = "Root cause description text goes here and should be able to wrap if needed."; 62 | // 63 | // resolution 64 | // 65 | this.resolution.AutoSize = true; 66 | this.resolution.Location = new System.Drawing.Point(21, 52); 67 | this.resolution.Margin = new System.Windows.Forms.Padding(5, 3, 3, 3); 68 | this.resolution.Name = "resolution"; 69 | this.resolution.Size = new System.Drawing.Size(119, 17); 70 | this.resolution.TabIndex = 2; 71 | this.resolution.Text = "Repair by doing this"; 72 | this.resolution.UseVisualStyleBackColor = true; 73 | // 74 | // pictureBox1 75 | // 76 | this.pictureBox1.Location = new System.Drawing.Point(0, 0); 77 | this.pictureBox1.Margin = new System.Windows.Forms.Padding(0); 78 | this.pictureBox1.Name = "pictureBox1"; 79 | this.tableLayoutPanel1.SetRowSpan(this.pictureBox1, 3); 80 | this.pictureBox1.Size = new System.Drawing.Size(16, 16); 81 | this.pictureBox1.TabIndex = 3; 82 | this.pictureBox1.TabStop = false; 83 | this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); 84 | // 85 | // tableLayoutPanel1 86 | // 87 | this.tableLayoutPanel1.AutoSize = true; 88 | this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 89 | this.tableLayoutPanel1.ColumnCount = 4; 90 | this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); 91 | this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); 92 | this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); 93 | this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); 94 | this.tableLayoutPanel1.Controls.Add(this.pictureBox1, 0, 0); 95 | this.tableLayoutPanel1.Controls.Add(this.resolution, 1, 2); 96 | this.tableLayoutPanel1.Controls.Add(this.title, 1, 0); 97 | this.tableLayoutPanel1.Controls.Add(this.desc, 1, 1); 98 | this.tableLayoutPanel1.Controls.Add(this.label1, 2, 0); 99 | this.tableLayoutPanel1.Controls.Add(this.pictureBox2, 3, 0); 100 | this.tableLayoutPanel1.Location = new System.Drawing.Point(15, 13); 101 | this.tableLayoutPanel1.Name = "tableLayoutPanel1"; 102 | this.tableLayoutPanel1.RowCount = 3; 103 | this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); 104 | this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); 105 | this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); 106 | this.tableLayoutPanel1.Size = new System.Drawing.Size(449, 72); 107 | this.tableLayoutPanel1.TabIndex = 4; 108 | // 109 | // label1 110 | // 111 | this.label1.Anchor = System.Windows.Forms.AnchorStyles.Left; 112 | this.label1.AutoSize = true; 113 | this.label1.Location = new System.Drawing.Point(379, 2); 114 | this.label1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); 115 | this.label1.Name = "label1"; 116 | this.label1.Size = new System.Drawing.Size(51, 13); 117 | this.label1.TabIndex = 0; 118 | this.label1.Text = "Detected"; 119 | // 120 | // pictureBox2 121 | // 122 | this.pictureBox2.Location = new System.Drawing.Point(433, 0); 123 | this.pictureBox2.Margin = new System.Windows.Forms.Padding(0); 124 | this.pictureBox2.Name = "pictureBox2"; 125 | this.pictureBox2.Size = new System.Drawing.Size(16, 16); 126 | this.pictureBox2.TabIndex = 3; 127 | this.pictureBox2.TabStop = false; 128 | this.pictureBox2.Click += new System.EventHandler(this.pictureBox1_Click); 129 | // 130 | // ProblemItem 131 | // 132 | this.Controls.Add(this.tableLayoutPanel1); 133 | this.MinimumSize = new System.Drawing.Size(20, 10); 134 | this.Name = "ProblemItem"; 135 | this.Size = new System.Drawing.Size(537, 254); 136 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 137 | this.tableLayoutPanel1.ResumeLayout(false); 138 | this.tableLayoutPanel1.PerformLayout(); 139 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); 140 | this.ResumeLayout(false); 141 | this.PerformLayout(); 142 | 143 | } 144 | 145 | #endregion 146 | 147 | private System.Windows.Forms.Label title; 148 | private System.Windows.Forms.Label desc; 149 | private System.Windows.Forms.CheckBox resolution; 150 | private System.Windows.Forms.PictureBox pictureBox1; 151 | private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; 152 | private System.Windows.Forms.Label label1; 153 | private System.Windows.Forms.PictureBox pictureBox2; 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /ProblemItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace TaskSchedulerConfig 5 | { 6 | public partial class ProblemItem : UserControl 7 | { 8 | private bool hidden = false; 9 | 10 | public ProblemItem() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public string Title 16 | { 17 | get { return title.Text; } 18 | set { title.Text = value; } 19 | } 20 | 21 | public string Description 22 | { 23 | get { return desc.Text; } 24 | set { desc.Text = value; } 25 | } 26 | 27 | public string Resolution 28 | { 29 | get { return resolution.Text; } 30 | set { resolution.Text = value; } 31 | } 32 | 33 | private void pictureBox1_Click(object sender, EventArgs e) 34 | { 35 | hidden = !hidden; 36 | resolution.Visible = desc.Visible = !hidden; 37 | pictureBox1.Image = hidden ? Properties.Resources.Minus : Properties.Resources.Plus; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ProblemItem.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 | -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace TaskSchedulerConfig 4 | { 5 | class Program 6 | { 7 | static void Main(string[] args) 8 | { 9 | Application.EnableVisualStyles(); 10 | Application.SetCompatibleTextRenderingDefault(false); 11 | Application.Run(new WizardForm()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("TaskSchedulerConfig")] 8 | 9 | // Setting ComVisible to false makes the types in this assembly not visible 10 | // to COM components. If you need to access a type in this assembly from 11 | // COM, set the ComVisible attribute to true on that type. 12 | [assembly: ComVisible(false)] 13 | 14 | // The following GUID is for the ID of the typelib if this project is exposed to COM 15 | [assembly: Guid("464ae5dd-6049-4a73-b07c-10cc1e3742f6")] 16 | [assembly: AssemblyDescription("https://github.com/dahall/TaskSchedulerConfig")] 17 | [assembly: AssemblyCompany("Open Source Community")] 18 | [assembly: AssemblyProduct("TaskSchedulerConfig")] 19 | [assembly: AssemblyCopyright("Copyright © 2019")] 20 | [assembly: AssemblyVersion("2.8.1.0")] 21 | [assembly: AssemblyFileVersion("2.8.1.0")] 22 | -------------------------------------------------------------------------------- /Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace TaskSchedulerConfig.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TaskSchedulerConfig.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized resource of type System.Drawing.Bitmap. 65 | /// 66 | internal static System.Drawing.Bitmap Detected { 67 | get { 68 | object obj = ResourceManager.GetObject("Detected", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// Looks up a localized string similar to File and Printer Sharing. 75 | /// 76 | internal static string FileAndPrinterSharingRule { 77 | get { 78 | return ResourceManager.GetString("FileAndPrinterSharingRule", resourceCulture); 79 | } 80 | } 81 | 82 | /// 83 | /// Looks up a localized string similar to Firewall is enabled. 84 | /// 85 | internal static string FirewallEnabled { 86 | get { 87 | return ResourceManager.GetString("FirewallEnabled", resourceCulture); 88 | } 89 | } 90 | 91 | /// 92 | /// Looks up a localized string similar to Firewall rule '{0}' is enabled. 93 | /// 94 | internal static string FirewallRuleEnabled { 95 | get { 96 | return ResourceManager.GetString("FirewallRuleEnabled", resourceCulture); 97 | } 98 | } 99 | 100 | /// 101 | /// Looks up a localized resource of type System.Drawing.Bitmap. 102 | /// 103 | internal static System.Drawing.Bitmap Fixed { 104 | get { 105 | object obj = ResourceManager.GetObject("Fixed", resourceCulture); 106 | return ((System.Drawing.Bitmap)(obj)); 107 | } 108 | } 109 | 110 | /// 111 | /// Looks up a localized string similar to General Information. 112 | /// 113 | internal static string GroupGeneral { 114 | get { 115 | return ResourceManager.GetString("GroupGeneral", resourceCulture); 116 | } 117 | } 118 | 119 | /// 120 | /// Looks up a localized string similar to Version 1 (XP/Server 2000). 121 | /// 122 | internal static string GroupV1 { 123 | get { 124 | return ResourceManager.GetString("GroupV1", resourceCulture); 125 | } 126 | } 127 | 128 | /// 129 | /// Looks up a localized string similar to Version 2 (Vista/2003 and later). 130 | /// 131 | internal static string GroupV2 { 132 | get { 133 | return ResourceManager.GetString("GroupV2", resourceCulture); 134 | } 135 | } 136 | 137 | /// 138 | /// Looks up a localized resource of type System.Drawing.Bitmap. 139 | /// 140 | internal static System.Drawing.Bitmap Minus { 141 | get { 142 | object obj = ResourceManager.GetObject("Minus", resourceCulture); 143 | return ((System.Drawing.Bitmap)(obj)); 144 | } 145 | } 146 | 147 | /// 148 | /// Looks up a localized resource of type System.Drawing.Bitmap. 149 | /// 150 | internal static System.Drawing.Bitmap NotFixed { 151 | get { 152 | object obj = ResourceManager.GetObject("NotFixed", resourceCulture); 153 | return ((System.Drawing.Bitmap)(obj)); 154 | } 155 | } 156 | 157 | /// 158 | /// Looks up a localized resource of type System.Drawing.Bitmap. 159 | /// 160 | internal static System.Drawing.Bitmap Plus { 161 | get { 162 | object obj = ResourceManager.GetObject("Plus", resourceCulture); 163 | return ((System.Drawing.Bitmap)(obj)); 164 | } 165 | } 166 | 167 | /// 168 | /// Looks up a localized string similar to "Remote Registry" service is running. 169 | /// 170 | internal static string RemoteRegistryServiceRunning { 171 | get { 172 | return ResourceManager.GetString("RemoteRegistryServiceRunning", resourceCulture); 173 | } 174 | } 175 | 176 | /// 177 | /// Looks up a localized string similar to Remote Scheduled Tasks Management. 178 | /// 179 | internal static string RemoteTaskManagementRule { 180 | get { 181 | return ResourceManager.GetString("RemoteTaskManagementRule", resourceCulture); 182 | } 183 | } 184 | 185 | /// 186 | /// Looks up a localized resource of type System.Drawing.Bitmap. 187 | /// 188 | internal static System.Drawing.Bitmap restarrow { 189 | get { 190 | object obj = ResourceManager.GetObject("restarrow", resourceCulture); 191 | return ((System.Drawing.Bitmap)(obj)); 192 | } 193 | } 194 | 195 | /// 196 | /// Looks up a localized resource of type System.Drawing.Bitmap. 197 | /// 198 | internal static System.Drawing.Bitmap Run { 199 | get { 200 | object obj = ResourceManager.GetObject("Run", resourceCulture); 201 | return ((System.Drawing.Bitmap)(obj)); 202 | } 203 | } 204 | 205 | /// 206 | /// Looks up a localized resource of type System.Drawing.Bitmap. 207 | /// 208 | internal static System.Drawing.Bitmap selarrow { 209 | get { 210 | object obj = ResourceManager.GetObject("selarrow", resourceCulture); 211 | return ((System.Drawing.Bitmap)(obj)); 212 | } 213 | } 214 | 215 | /// 216 | /// Looks up a localized resource of type System.Drawing.Bitmap. 217 | /// 218 | internal static System.Drawing.Bitmap shield { 219 | get { 220 | object obj = ResourceManager.GetObject("shield", resourceCulture); 221 | return ((System.Drawing.Bitmap)(obj)); 222 | } 223 | } 224 | 225 | /// 226 | /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). 227 | /// 228 | internal static System.Drawing.Icon ts { 229 | get { 230 | object obj = ResourceManager.GetObject("ts", resourceCulture); 231 | return ((System.Drawing.Icon)(obj)); 232 | } 233 | } 234 | 235 | /// 236 | /// Looks up a localized string similar to User '{0}' is a member of at least one of the required groups. 237 | /// 238 | internal static string UserHasCorrectRights { 239 | get { 240 | return ResourceManager.GetString("UserHasCorrectRights", resourceCulture); 241 | } 242 | } 243 | 244 | /// 245 | /// Looks up a localized string similar to User has access rights to C:\Windows\Tasks. 246 | /// 247 | internal static string UserHasPathAccess { 248 | get { 249 | return ResourceManager.GetString("UserHasPathAccess", resourceCulture); 250 | } 251 | } 252 | 253 | /// 254 | /// Looks up a localized string similar to User '{0}' is a member of the Administrators group. 255 | /// 256 | internal static string UserIsAdmin { 257 | get { 258 | return ResourceManager.GetString("UserIsAdmin", resourceCulture); 259 | } 260 | } 261 | 262 | /// 263 | /// Looks up a localized string similar to User '{0}' is a member of the Backup Operators group. 264 | /// 265 | internal static string UserIsBackupOperator { 266 | get { 267 | return ResourceManager.GetString("UserIsBackupOperator", resourceCulture); 268 | } 269 | } 270 | 271 | /// 272 | /// Looks up a localized string similar to User '{0}' is a member of the Server Operators group. 273 | /// 274 | internal static string UserIsServerOperator { 275 | get { 276 | return ResourceManager.GetString("UserIsServerOperator", resourceCulture); 277 | } 278 | } 279 | } 280 | } 281 | -------------------------------------------------------------------------------- /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 | File and Printer Sharing 122 | 123 | 124 | Firewall is enabled 125 | 126 | 127 | Firewall rule '{0}' is enabled 128 | 129 | 130 | General Information 131 | 132 | 133 | Version 1 (XP/Server 2000) 134 | 135 | 136 | Version 2 (Vista/2003 and later) 137 | 138 | 139 | Remote Scheduled Tasks Management 140 | 141 | 142 | 143 | ..\Resources\restarrow.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 144 | 145 | 146 | ..\Resources\selarrow.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 147 | 148 | 149 | ..\Resources\shield.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 150 | 151 | 152 | User '{0}' is a member of at least one of the required groups 153 | 154 | 155 | User has access rights to C:\Windows\Tasks 156 | 157 | 158 | User '{0}' is a member of the Administrators group 159 | 160 | 161 | User '{0}' is a member of the Backup Operators group 162 | 163 | 164 | User '{0}' is a member of the Server Operators group 165 | 166 | 167 | ..\Resources\Minus.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 168 | 169 | 170 | ..\Resources\Plus.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 171 | 172 | 173 | ..\Resources\tsnew.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 174 | 175 | 176 | "Remote Registry" service is running 177 | 178 | 179 | ..\Resources\109_AllAnnotations_Warning_16x16_72.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 180 | 181 | 182 | ..\Resources\109_AllAnnotations_Default_16x16_72.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 183 | 184 | 185 | ..\Resources\109_AllAnnotations_Error_16x16_72.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 186 | 187 | 188 | ..\Resources\StatusAnnotations_Play_16xLG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 189 | 190 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Task Scheduler Configuration Troubleshooter 2 | 3 | > A ClickOnce deployed solution for troubleshooting problems with Task Scheduler functionality and connectivity to remote systems. 4 | 5 | Download ClickOnce installer [here](https://github.com/dahall/TaskSchedulerConfig/blob/master/publish/setup.exe?raw=true). 6 | -------------------------------------------------------------------------------- /Resources/109_AllAnnotations_Default_16x16_72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/109_AllAnnotations_Default_16x16_72.png -------------------------------------------------------------------------------- /Resources/109_AllAnnotations_Error_16x16_72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/109_AllAnnotations_Error_16x16_72.png -------------------------------------------------------------------------------- /Resources/109_AllAnnotations_Warning_16x16_72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/109_AllAnnotations_Warning_16x16_72.png -------------------------------------------------------------------------------- /Resources/Minus.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/Minus.bmp -------------------------------------------------------------------------------- /Resources/Plus.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/Plus.bmp -------------------------------------------------------------------------------- /Resources/StatusAnnotations_Play_16xLG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/StatusAnnotations_Play_16xLG.png -------------------------------------------------------------------------------- /Resources/restarrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/restarrow.gif -------------------------------------------------------------------------------- /Resources/selarrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/selarrow.gif -------------------------------------------------------------------------------- /Resources/shield.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/shield.gif -------------------------------------------------------------------------------- /Resources/tsnew.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/Resources/tsnew.ico -------------------------------------------------------------------------------- /ServiceHelper.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Runtime.InteropServices; 3 | 4 | namespace System.ServiceProcess 5 | { 6 | internal static class ServiceControllerExtensions 7 | { 8 | [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] 9 | [return: MarshalAs(UnmanagedType.Bool)] 10 | private static extern Boolean ChangeServiceConfig(IntPtr hService, UInt32 nServiceType, UInt32 nStartType, UInt32 nErrorControl, String lpBinaryPathName, String lpLoadOrderGroup, IntPtr lpdwTagId, [In] char[] lpDependencies, String lpServiceStartName, String lpPassword, String lpDisplayName); 11 | 12 | private const uint SERVICE_NO_CHANGE = 0xFFFFFFFF; 13 | 14 | public static void SetStartType(this ServiceController svc, ServiceStartMode mode) 15 | { 16 | using (var serviceHandle = svc.ServiceHandle) 17 | if (!ChangeServiceConfig(serviceHandle.DangerousGetHandle(), SERVICE_NO_CHANGE, (uint)mode, SERVICE_NO_CHANGE, null, null, IntPtr.Zero, null, null, null, null)) 18 | throw new ExternalException("Could not change service start type.", new Win32Exception()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ServicesDetail.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Linq; 4 | using System.Security.Permissions; 5 | using System.Security.Policy; 6 | using System.Security.Principal; 7 | using System.ServiceProcess; 8 | 9 | using Microsoft.Win32; 10 | 11 | namespace TaskSchedulerConfig 12 | { 13 | class ServicesDetail : IDisposable 14 | { 15 | private WindowsIdentity id; 16 | public SecurityIdentifier sid; 17 | private WindowsPrincipal prin; 18 | private string server = null; 19 | private Firewall fw = null; 20 | private ServiceController sc = null; 21 | 22 | public ServicesDetail(string svr = null) 23 | { 24 | server = svr; 25 | id = WindowsIdentity.GetCurrent(); 26 | sid = new SecurityIdentifier(id.User.Value); 27 | prin = new WindowsPrincipal(id); 28 | } 29 | 30 | public bool UserIsAdmin => prin.IsInRole(WindowsBuiltInRole.Administrator); 31 | public bool UserIsBackupOperator => prin.IsInRole(WindowsBuiltInRole.BackupOperator); 32 | public bool UserIsServerOperator => prin.IsInRole(WindowsBuiltInRole.SystemOperator); 33 | public bool V1TaskPathAccess 34 | { 35 | get 36 | { 37 | try 38 | { 39 | new FileIOPermission(FileIOPermissionAccess.AllAccess, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "Tasks")).Demand(); 40 | return true; 41 | } 42 | catch { } 43 | return false; 44 | } 45 | } 46 | 47 | public Firewall Firewall => fw ?? (fw = new Firewall(server)); 48 | 49 | public bool IsLocal => string.IsNullOrEmpty(server); 50 | 51 | public ServiceController RemoteRegistryService => sc ?? (sc = new ServiceController("RemoteRegistry", server ?? ".")); 52 | 53 | public string Server => server; 54 | 55 | public string User => id.Name; 56 | 57 | public LocalSecurity.Rights UserRights => new LocalSecurity(Server).UserAccountRights(User); 58 | 59 | public LocalSecurity.SystemAccess UserAccessRights => new LocalSecurity(Server).UserSystemAccess(User); 60 | 61 | public bool RemoteRegistryServiceRunning => RemoteRegistryService.Status == ServiceControllerStatus.Running; 62 | 63 | void IDisposable.Dispose() 64 | { 65 | if (sc != null) { sc.Close(); sc = null; } 66 | if (fw != null) { fw = null; } 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /TaskSchedulerConfig.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {464AE5DD-6049-4A73-B07C-10CC1E3742F6} 8 | WinExe 9 | Properties 10 | TaskSchedulerConfig 11 | TaskSchedulerConfig 12 | v4.5.2 13 | 512 14 | true 15 | SAK 16 | SAK 17 | SAK 18 | SAK 19 | 20 | 21 | true 22 | C:\Users\dahall\Documents\GitHubRepos\TaskSchedulerConfig\publish\ 23 | true 24 | Web 25 | true 26 | Foreground 27 | 7 28 | Days 29 | false 30 | false 31 | true 32 | https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/master/publish/ 33 | https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/master/publish/ 34 | https://github.com/dahall/TaskSchedulerConfig 35 | https://github.com/dahall/TaskSchedulerConfig 36 | Task Scheduler Config 37 | OpenSource Community 38 | Task Scheduler Managed Wrapper 39 | true 40 | publish.htm 41 | 0 42 | 2.8.1.0 43 | false 44 | true 45 | true 46 | 47 | 48 | AnyCPU 49 | true 50 | full 51 | false 52 | bin\Debug\ 53 | DEBUG;TRACE 54 | prompt 55 | 4 56 | false 57 | 58 | 59 | AnyCPU 60 | pdbonly 61 | true 62 | bin\Release\ 63 | TRACE 64 | prompt 65 | 4 66 | false 67 | 68 | 69 | 70 | 71 | 72 | FC7977B36A391A23F6DBCB48AFB0E1058E652DFB 73 | 74 | 75 | TaskSchedulerConfig_TemporaryKey.pfx 76 | 77 | 78 | true 79 | 80 | 81 | true 82 | 83 | 84 | true 85 | 86 | 87 | TaskSchedulerConfig.snk 88 | 89 | 90 | 91 | 92 | packages\AeroWizard.2.2.7\lib\net45\AeroWizard.dll 93 | 94 | 95 | packages\TaskScheduler.2.8.21\lib\net452\Microsoft.Win32.TaskScheduler.dll 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | Component 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | True 119 | True 120 | Resources.resx 121 | 122 | 123 | 124 | 125 | Form 126 | 127 | 128 | WizardForm.cs 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | ResXFileCodeGenerator 140 | Resources.Designer.cs 141 | 142 | 143 | WizardForm.cs 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | False 179 | Microsoft .NET Framework 4.5.2 %28x86 and x64%29 180 | true 181 | 182 | 183 | False 184 | .NET Framework 3.5 SP1 185 | false 186 | 187 | 188 | 189 | 196 | -------------------------------------------------------------------------------- /TaskSchedulerConfig.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26730.12 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TaskSchedulerConfig", "TaskSchedulerConfig.csproj", "{464AE5DD-6049-4A73-B07C-10CC1E3742F6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {464AE5DD-6049-4A73-B07C-10CC1E3742F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {464AE5DD-6049-4A73-B07C-10CC1E3742F6}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {464AE5DD-6049-4A73-B07C-10CC1E3742F6}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {464AE5DD-6049-4A73-B07C-10CC1E3742F6}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {E64BD0E7-96FB-4BE2-8D26-3DCA3B0B35DC} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /TaskSchedulerConfig.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/TaskSchedulerConfig.snk -------------------------------------------------------------------------------- /TaskSchedulerConfigKey.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/TaskSchedulerConfigKey.pfx -------------------------------------------------------------------------------- /app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 52 | 59 | 60 | 61 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /license.md: -------------------------------------------------------------------------------- 1 | MIT 2 | Copyright (c) 2003-2017 David Hall 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/AeroWizard.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_6_0_0/AeroWizard.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/JetBrains.Annotations.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_6_0_0/JetBrains.Annotations.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/Microsoft.Win32.TaskScheduler.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_6_0_0/Microsoft.Win32.TaskScheduler.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/TaskSchedulerConfig.application: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | gzJWdopGfd6gkfnCqGye+0K20Fs= 25 | 26 | 27 | 28 | 2r7sg9uKWOv6WsmbNR3xp4FpGo4=faXVJlG2dWhneZ8mMiGA9JHON1gOCoCpKq1d8YPKw+SorxGiNNXhE9iAxQnaSh9jgKwG+Sxi3EvbJa/co4XJO2qR7DhHJWSSRPEVRI/Jx5jzIpHAmlbkw7ks+sN95iBDpo7M+Q6/uVziJ3MZGSOSMOwjzJ2x+f0qnK3lfFudGKk=wXg8H8bVDaL7nHOV3+huXCkWIQ9LQ4+krrANGWmLcAYfv5C/QhreaI4Bj1t1WRqvDfhiY/mAqYpDzFlFg0DXI9xt5BTVfCE+73pvWcbl0uDMtIfMw4Ch6lO20lmL7MhY8TEKlpOagMRQhHWlIv2K08VJ92gXcEZDi63b0edWS/c=AQABCN=AMERICAS\dahall5p9P/MxWB5nN6CT2sGE7ZLr52ho=IzI6sP1Cwsx8WrDQ73voFbepJ0rDHyVwttYNsfuIeQUxmUQnbVp1OHJoLn+a23wSXPtnehKgYPOwnh0WywguI1GXMNMfg5QFnNtFk8+aKhQw9SSvPbM4Tr4K2OabvjFFt89t8KlIwcnN+1V9JyHVpo1EyKfllwkeTDjc7K6vf/k=wXg8H8bVDaL7nHOV3+huXCkWIQ9LQ4+krrANGWmLcAYfv5C/QhreaI4Bj1t1WRqvDfhiY/mAqYpDzFlFg0DXI9xt5BTVfCE+73pvWcbl0uDMtIfMw4Ch6lO20lmL7MhY8TEKlpOagMRQhHWlIv2K08VJ92gXcEZDi63b0edWS/c=AQABMIIB1TCCAT6gAwIBAgIQONy/5lvX5bRAByDIfpbW+jANBgkqhkiG9w0BAQUFADApMScwJQYDVQQDHh4AQQBNAEUAUgBJAEMAQQBTAFwAZABhAGgAYQBsAGwwHhcNMTcwNzAxMTYyNjA2WhcNMTgwNzAxMjIyNjA2WjApMScwJQYDVQQDHh4AQQBNAEUAUgBJAEMAQQBTAFwAZABhAGgAYQBsAGwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMF4PB/G1Q2i+5xzld/oblwpFiEPS0OPpK6wDRlpi3AGH7+Qv0Ia3miOAY9bdVkarw34YmP5gKmKQ8xZRYNA1yPcbeQU1XwhPu96b1nG5dLgzLSHzMOAoepTttJZi+zIWPExCpaTmoDEUIR1pSL9itPFSfdoF3BGQ4ut29HnVkv3AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAWcainMPPI0GNUwzw5ZrM96gkIR4KJHXu+3i11B6ehQSrNxvaPrp3V9Ict+pMcGjngacMvWU6tnzItoURRKNR2CaRDrg1xbKBZLG8maS0DuVfAaM7zyuE4b77rwKM0AGZR77S2N5Kf2afQQzA+dTLEWMUXpdz1cTerX+EHK0HXck= -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/TaskSchedulerConfig.exe.config.deploy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/TaskSchedulerConfig.exe.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_6_0_0/TaskSchedulerConfig.exe.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/TaskSchedulerConfig.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | TiL8tKl/7R+SiwVjwuGD3Mxmvq0= 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 7w7SF8RUmfpF5gSwLo+f8NakpR0= 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | wfss9dyzJqrgba+3J/2rsy44nuw= 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | RHaENUMC7IrLyxdikIjsiyKoyoY= 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | bi7Kv182dm9nlJLTcjV5q59fHlE= 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 2zNvLLGp9IX/mDZNyG3hipdbDE8= 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | P2Yf80mL28iVQl70lT9hyV4SjzU= 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | E5ZREHX+LuLLKqXEbQOAioWbR9Q= 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | RkpS4rAgwoGxWGD2sTgmX3jcNA4= 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 06MAsbgFUGlKhu1U3KJ4fh8CRLU= 159 | 160 | 161 | 84vFEggXRpZ+2yi631VUwGpa2QM=FB/5rEiILE5RkOSOvjz82Ue4H9sb8aggLBjGyfEaCE3EFL+f2A20kZtGemZNOTDx8MqQcaDNlHpNB65ZK/x+VT30mawxfKBeX0TIEUlmzqXP1E5yxOU3QYIbaCxR+iYLsynS0eKdBxWiJibegYMhGsJw01XMBYb7UqwtGZr88qI=wXg8H8bVDaL7nHOV3+huXCkWIQ9LQ4+krrANGWmLcAYfv5C/QhreaI4Bj1t1WRqvDfhiY/mAqYpDzFlFg0DXI9xt5BTVfCE+73pvWcbl0uDMtIfMw4Ch6lO20lmL7MhY8TEKlpOagMRQhHWlIv2K08VJ92gXcEZDi63b0edWS/c=AQABCN=AMERICAS\dahallYFmfzbH7tMhUZy4/D1pr8pvQ0J8=rWc984xhg8sEZIs5jEMSBBhLnnjj8n0nNgfYD09HSsAkJUQzZ3ZGKhVQjrr3DfZVj68AlGMHHKXsRwGDsv19WljhBLAgQ4YxcXWeipR+lK0ubxl5Fe0W6d7J3R7SEf0kVoWaNZFpqQ+Xe+wSv72KFL5HgvfH59kCZF3jpfee0H0=wXg8H8bVDaL7nHOV3+huXCkWIQ9LQ4+krrANGWmLcAYfv5C/QhreaI4Bj1t1WRqvDfhiY/mAqYpDzFlFg0DXI9xt5BTVfCE+73pvWcbl0uDMtIfMw4Ch6lO20lmL7MhY8TEKlpOagMRQhHWlIv2K08VJ92gXcEZDi63b0edWS/c=AQABMIIB1TCCAT6gAwIBAgIQONy/5lvX5bRAByDIfpbW+jANBgkqhkiG9w0BAQUFADApMScwJQYDVQQDHh4AQQBNAEUAUgBJAEMAQQBTAFwAZABhAGgAYQBsAGwwHhcNMTcwNzAxMTYyNjA2WhcNMTgwNzAxMjIyNjA2WjApMScwJQYDVQQDHh4AQQBNAEUAUgBJAEMAQQBTAFwAZABhAGgAYQBsAGwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMF4PB/G1Q2i+5xzld/oblwpFiEPS0OPpK6wDRlpi3AGH7+Qv0Ia3miOAY9bdVkarw34YmP5gKmKQ8xZRYNA1yPcbeQU1XwhPu96b1nG5dLgzLSHzMOAoepTttJZi+zIWPExCpaTmoDEUIR1pSL9itPFSfdoF3BGQ4ut29HnVkv3AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAWcainMPPI0GNUwzw5ZrM96gkIR4KJHXu+3i11B6ehQSrNxvaPrp3V9Ict+pMcGjngacMvWU6tnzItoURRKNR2CaRDrg1xbKBZLG8maS0DuVfAaM7zyuE4b77rwKM0AGZR77S2N5Kf2afQQzA+dTLEWMUXpdz1cTerX+EHK0HXck= -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/de/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_6_0_0/de/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/es/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_6_0_0/es/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/fr/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_6_0_0/fr/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/it/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_6_0_0/it/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_6_0_0/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_6_0_0/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/AeroWizard.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/AeroWizard.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/Microsoft.Win32.TaskScheduler.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/Microsoft.Win32.TaskScheduler.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/TaskSchedulerConfig.application: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | clud5KXcNmINGIssMIvzjLLBblcQ0GF2Ecf5RecF3Sc= 25 | 26 | 27 | 28 | PZ5CFUYDOUDWZRn2AggD/I26GEo=eNWdLWcacIP9EE5dxK3TyDEk/geq3OwfahQO9saz7Qot7el8F62FYmS/seTkxIPu3WqZV1LlJIFG00IuZYMA2urJFYSroKh1Q2J+B2ct+S1SCsCtzSpFhY4Vz1yq2LATGTqcCgfG86ka6Fh+Hxp0GIQuEhKbBBysqsDRCsPk1G4=ytWyySOtAsFyyljgg/+dm0dhaURfK6Q7xOkkAb2p8aIAik3Q82ECh5efjiGNNAcLeAUODPDs67eHeeMR8qnGWsto/jxzEV2HVJSmW0v8SnFUMQxzE8ycWTwPF9HtFtbGGkLeK2TDEwVmpv1bk6YZ+riql76oG7ZWjsu7SEsTpEU=AQABCN=AMERICAS\dahallCEtGuyz7gEIllMDh5GKew2LWuaU=FJPIkCjqGL2YpDQmWk9qjzM+UFcazjZs+pGhIiBAhGPqiQMGqt23KDUDwlZJP/nzGagQTi2tv1nUc9RqrshADiLfP8Pe9DoRblO815hgkLZM7Qra4K5M8XOSz5I2ZzB+Z80KRw+C1B2CWWTxCeOxDH+JDYCHHhnC+VG49Z3FnRE=ytWyySOtAsFyyljgg/+dm0dhaURfK6Q7xOkkAb2p8aIAik3Q82ECh5efjiGNNAcLeAUODPDs67eHeeMR8qnGWsto/jxzEV2HVJSmW0v8SnFUMQxzE8ycWTwPF9HtFtbGGkLeK2TDEwVmpv1bk6YZ+riql76oG7ZWjsu7SEsTpEU=AQABMIIB1TCCAT6gAwIBAgIQZFaQ4Ma9875PxxNuiW8iGzANBgkqhkiG9w0BAQUFADApMScwJQYDVQQDHh4AQQBNAEUAUgBJAEMAQQBTAFwAZABhAGgAYQBsAGwwHhcNMTkwNzE4MTkxNzA2WhcNMjAwNzE4MDExNzA2WjApMScwJQYDVQQDHh4AQQBNAEUAUgBJAEMAQQBTAFwAZABhAGgAYQBsAGwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMrVsskjrQLBcspY4IP/nZtHYWlEXyukO8TpJAG9qfGiAIpN0PNhAoeXn44hjTQHC3gFDgzw7Ou3h3njEfKpxlrLaP48cxFdh1SUpltL/EpxVDEMcxPMnFk8DxfR7RbWxhpC3itkwxMFZqb9W5OmGfq4qpe+qBu2Vo7Lu0hLE6RFAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAqIm+MjzhVt6QSYUgHROaZYZLFL1Ys+j/r4E5DoZJEjZsGrcBUZ0nm62MEMpcqan4rF1Oro9nG93pGx+cceKsos8n0QVntgFodLgsOdIe6GDHgg3anRYgYcg3YQsgR9eqIAlT6zJ+LfLkEvojBBS10BcMc6UUgtiCKllFjm4FGTc= -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/TaskSchedulerConfig.exe.config.deploy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/TaskSchedulerConfig.exe.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/TaskSchedulerConfig.exe.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/TaskSchedulerConfig.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | OUl6WkfrrkO5IYj1dSmxDbJM4DaN05NRcrENNLwQI+c= 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | swNzLE9HmdbEfNvWBRL//z1oqrOOXe2FQ5Xly90N8e0= 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 1feKH7Xfu95VRrCeV8ePE0sMo/pYNp/B2pg88GD2wPI= 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | mhzW1LVFIavgCqL3FNRdEx0/5qu2rm5WIulJ50ZqYEY= 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 4FSv/B+rKbuPoURIYFeBahzbcfl2t3/DlQxpicFMb38= 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 1IrNFhwk2chELbcmvGN7hAlZUuRzVc3vEjSmZe8yLQs= 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | /d/ePNiPbSrLgidYS+r6SvcyHu29zBGKFcENIPRg9Co= 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | E7Q/VeubjKEg4uxVEnO+mC9Ut9Xf/qn6n23T1Onj5us= 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | ZkyE0lmXyPk1MCaA9FegvnRvaH6wZ5y4ZPix2hHYPI0= 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 6qFp/y1jxeJJ2GjskKFbV3oB4EEfskK8bOwBW0L5IsQ= 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | GUHS+OFx1101tsQAmSxc2HiZ6DFfxLEUn0Es0Znho/o= 171 | 172 | 173 | g0I+KzpKs69RCUt7imqMR/4SRGU=ngO12MTIO6vxAHp7Vm/+KLJhAUKQVaekGk/8kdMr+Wu5KnoRF8ihlHX2j+gTHik8WHdMgmdO85E+70LVCSLduRAICY/EJMToZ34RmpZs96T3aCO7dOpvWxGgNziwtaCRxmF2c/wNZ8hLg2XP5Q9Ht0ZFj+EOp1orOVaJYP8Hqyg=ytWyySOtAsFyyljgg/+dm0dhaURfK6Q7xOkkAb2p8aIAik3Q82ECh5efjiGNNAcLeAUODPDs67eHeeMR8qnGWsto/jxzEV2HVJSmW0v8SnFUMQxzE8ycWTwPF9HtFtbGGkLeK2TDEwVmpv1bk6YZ+riql76oG7ZWjsu7SEsTpEU=AQABCN=AMERICAS\dahallCprPIhV9cTgVjMKHLPe7BEStUAU=NwvIrOFWO/9ljTZQZdByzM+niggjto4lGW0eskX4s7o96UqVBOfmI1Ov2g1t5e7kxoHjSXbGGDdI5fyASpsz9BG7wae+vULr7nqqxFEnOR+USg2W2ZUhmz1W86yapxeCGETljkSNUondTEjQHvV0g0tFAw2b2RRK7SZPtg3TOzU=ytWyySOtAsFyyljgg/+dm0dhaURfK6Q7xOkkAb2p8aIAik3Q82ECh5efjiGNNAcLeAUODPDs67eHeeMR8qnGWsto/jxzEV2HVJSmW0v8SnFUMQxzE8ycWTwPF9HtFtbGGkLeK2TDEwVmpv1bk6YZ+riql76oG7ZWjsu7SEsTpEU=AQABMIIB1TCCAT6gAwIBAgIQZFaQ4Ma9875PxxNuiW8iGzANBgkqhkiG9w0BAQUFADApMScwJQYDVQQDHh4AQQBNAEUAUgBJAEMAQQBTAFwAZABhAGgAYQBsAGwwHhcNMTkwNzE4MTkxNzA2WhcNMjAwNzE4MDExNzA2WjApMScwJQYDVQQDHh4AQQBNAEUAUgBJAEMAQQBTAFwAZABhAGgAYQBsAGwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMrVsskjrQLBcspY4IP/nZtHYWlEXyukO8TpJAG9qfGiAIpN0PNhAoeXn44hjTQHC3gFDgzw7Ou3h3njEfKpxlrLaP48cxFdh1SUpltL/EpxVDEMcxPMnFk8DxfR7RbWxhpC3itkwxMFZqb9W5OmGfq4qpe+qBu2Vo7Lu0hLE6RFAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAqIm+MjzhVt6QSYUgHROaZYZLFL1Ys+j/r4E5DoZJEjZsGrcBUZ0nm62MEMpcqan4rF1Oro9nG93pGx+cceKsos8n0QVntgFodLgsOdIe6GDHgg3anRYgYcg3YQsgR9eqIAlT6zJ+LfLkEvojBBS10BcMc6UUgtiCKllFjm4FGTc= -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/de/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/de/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/es/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/es/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/fr/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/fr/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/it/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/it/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/pl/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/pl/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/ru/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/ru/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_0_0/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_0_0/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/AeroWizard.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/AeroWizard.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/Microsoft.Win32.TaskScheduler.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/Microsoft.Win32.TaskScheduler.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/TaskSchedulerConfig.application: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | bkTmSNG67Tby6s7g+FQMGeJWsXVtzQsmHB3y329qCfI= 25 | 26 | 27 | 28 | +jUqG81Y1yChQ28qcFdBewSnASd/dFAch3rQRVTbb5o=jQpNqx7sU4ZTVnkLDHNlMNfqkdxpl61AZp/i0mLpfwbUds4o1EtltfoqyY+4y9vO9rulgUbL2xhPNTxKWBTBEmqWX84y8LoCU7ibcG1QymMZmsWuKnik4jlzc+i/adylJivgOpv8m9MY99dR3/ekzA1WdxfL5zviB8ursJT7vvQ=oRmIlhlWiHFN9MNijnmoIHL1fX3hwE+cFpd76nBlaaog4DF8MIgFA/9A/YkYfe0HIVtyjLTr8vG0jcHTYYyKbcQh3bTqbb6uTiC3+o2Nf5nGjW2HpBJ/i1hWUn4iCxy5G9yeNTeY1gY7+JkwmwscvSH0CFs7jN2oixbQJfpQUV0=AQABCN=HALLAN-SVR\dahallCCjY6ygVvTNajoPYbQwCMyH029BKjk0ZUiChQIMIel8=c/yOmtIdlzxhCw6cs7RWyUYWE2FTXs/HSH1dnxp+eMEMUXzGmX/RdqWGeD0BaDJMNZ4lUtbzvnFScu2DC/bdiXKlEtyk/LkTogJ0QcUDJ7xJfChsJn3Z1ltu4Z489GKf0JlhQSAXXuoiWjsdcXl07OrZGO+sd6ypJ0ck4IwktG8=oRmIlhlWiHFN9MNijnmoIHL1fX3hwE+cFpd76nBlaaog4DF8MIgFA/9A/YkYfe0HIVtyjLTr8vG0jcHTYYyKbcQh3bTqbb6uTiC3+o2Nf5nGjW2HpBJ/i1hWUn4iCxy5G9yeNTeY1gY7+JkwmwscvSH0CFs7jN2oixbQJfpQUV0=AQABMIIB3TCCAUagAwIBAgIQZnQMaQSltIxAJdZREueVQDANBgkqhkiG9w0BAQsFADAtMSswKQYDVQQDHiIASABBAEwATABBAE4ALQBTAFYAUgBcAGQAYQBoAGEAbABsMB4XDTIwMDkwNDE2NDE0NFoXDTIxMDkwNDIyNDE0NFowLTErMCkGA1UEAx4iAEgAQQBMAEwAQQBOAC0AUwBWAFIAXABkAGEAaABhAGwAbDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoRmIlhlWiHFN9MNijnmoIHL1fX3hwE+cFpd76nBlaaog4DF8MIgFA/9A/YkYfe0HIVtyjLTr8vG0jcHTYYyKbcQh3bTqbb6uTiC3+o2Nf5nGjW2HpBJ/i1hWUn4iCxy5G9yeNTeY1gY7+JkwmwscvSH0CFs7jN2oixbQJfpQUV0CAwEAATANBgkqhkiG9w0BAQsFAAOBgQBGFz/q1KVTsdulm/JUIBE9URhX/XvyOCeaucgC9qlsjtz0jI1sdgW5OQovHDcwnmqpMfhi7MZu4mZ+HYoInYfPTE9/xLw2/m3wE5qjScrQwo8BmVO/oJJRnO+WIKL75QDvj5/ADn6yV5/UJVo6jNXKU4T2X3R1uXGQUPuIkSgtyQ== -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/TaskSchedulerConfig.exe.config.deploy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/TaskSchedulerConfig.exe.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/TaskSchedulerConfig.exe.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/de/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/de/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/de/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/de/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/es/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/es/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/es/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/es/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/fr/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/fr/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/fr/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/fr/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/it/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/it/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/it/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/it/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/pl/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/pl/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/pl/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/pl/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/ru/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/ru/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/ru/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/ru/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/zh-CN/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/zh-CN/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_8_1_0/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_8_1_0/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/AeroWizard.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/AeroWizard.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/Microsoft.Win32.TaskScheduler.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/Microsoft.Win32.TaskScheduler.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/TaskSchedulerConfig.application: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 5SF81Cv2OdKb5rwWopkSmx0oitp654xVbXHHnmrvuOA= 25 | 26 | 27 | 28 | V+HZqvg+E6W1WjTaYm7avH1ADK5btfjB1E7cHkjVqjQ=fnTbC4qLcXmE2zi9QT4fQps7cqeXucSkesRi7o8LAz8nup0LvM0ugaB13My6iDL2p8NerxHC5FJATDSalt9KEnSQK2fRgUIyWwvQL44eg/BnVszAHAAApNs4pYh/3C6FuaOhSQftTeSn6nKqmT68X3vuGhgmRc4nfP18Rdvl0lE=oRmIlhlWiHFN9MNijnmoIHL1fX3hwE+cFpd76nBlaaog4DF8MIgFA/9A/YkYfe0HIVtyjLTr8vG0jcHTYYyKbcQh3bTqbb6uTiC3+o2Nf5nGjW2HpBJ/i1hWUn4iCxy5G9yeNTeY1gY7+JkwmwscvSH0CFs7jN2oixbQJfpQUV0=AQABCN=HALLAN-SVR\dahallGegKiSivqrOWlv827wLNmcMRKbs0c/BbOzHRMG/Myxo=mPPxTEWmsZkHAx7AsBfsyUR0diPVcyHLd3xpjmf9huaXQbSELSkAsuirR9ly5Ta8PqV7YYIz5SGIrg/bkcq56K+1VwVXDz5jABNYEGZHtodzVzttLaCged4GocWyTY9rpmWeOj0oPn5FjR+ET2bc9kgtaygq5npirqrQ5Dj0kIg=oRmIlhlWiHFN9MNijnmoIHL1fX3hwE+cFpd76nBlaaog4DF8MIgFA/9A/YkYfe0HIVtyjLTr8vG0jcHTYYyKbcQh3bTqbb6uTiC3+o2Nf5nGjW2HpBJ/i1hWUn4iCxy5G9yeNTeY1gY7+JkwmwscvSH0CFs7jN2oixbQJfpQUV0=AQABMIIB3TCCAUagAwIBAgIQZnQMaQSltIxAJdZREueVQDANBgkqhkiG9w0BAQsFADAtMSswKQYDVQQDHiIASABBAEwATABBAE4ALQBTAFYAUgBcAGQAYQBoAGEAbABsMB4XDTIwMDkwNDE2NDE0NFoXDTIxMDkwNDIyNDE0NFowLTErMCkGA1UEAx4iAEgAQQBMAEwAQQBOAC0AUwBWAFIAXABkAGEAaABhAGwAbDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoRmIlhlWiHFN9MNijnmoIHL1fX3hwE+cFpd76nBlaaog4DF8MIgFA/9A/YkYfe0HIVtyjLTr8vG0jcHTYYyKbcQh3bTqbb6uTiC3+o2Nf5nGjW2HpBJ/i1hWUn4iCxy5G9yeNTeY1gY7+JkwmwscvSH0CFs7jN2oixbQJfpQUV0CAwEAATANBgkqhkiG9w0BAQsFAAOBgQBGFz/q1KVTsdulm/JUIBE9URhX/XvyOCeaucgC9qlsjtz0jI1sdgW5OQovHDcwnmqpMfhi7MZu4mZ+HYoInYfPTE9/xLw2/m3wE5qjScrQwo8BmVO/oJJRnO+WIKL75QDvj5/ADn6yV5/UJVo6jNXKU4T2X3R1uXGQUPuIkSgtyQ== -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/TaskSchedulerConfig.exe.config.deploy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/TaskSchedulerConfig.exe.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/TaskSchedulerConfig.exe.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/de/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/de/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/de/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/de/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/es/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/es/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/es/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/es/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/fr/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/fr/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/fr/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/fr/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/it/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/it/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/it/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/it/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/pl/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/pl/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/pl/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/pl/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/ru/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/ru/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/ru/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/ru/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/zh-CN/AeroWizard.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/zh-CN/AeroWizard.resources.dll.deploy -------------------------------------------------------------------------------- /publish/Application Files/TaskSchedulerConfig_2_9_0_0/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll.deploy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/Application Files/TaskSchedulerConfig_2_9_0_0/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll.deploy -------------------------------------------------------------------------------- /publish/TaskSchedulerConfig.application: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | bkTmSNG67Tby6s7g+FQMGeJWsXVtzQsmHB3y329qCfI= 25 | 26 | 27 | 28 | +jUqG81Y1yChQ28qcFdBewSnASd/dFAch3rQRVTbb5o=jQpNqx7sU4ZTVnkLDHNlMNfqkdxpl61AZp/i0mLpfwbUds4o1EtltfoqyY+4y9vO9rulgUbL2xhPNTxKWBTBEmqWX84y8LoCU7ibcG1QymMZmsWuKnik4jlzc+i/adylJivgOpv8m9MY99dR3/ekzA1WdxfL5zviB8ursJT7vvQ=oRmIlhlWiHFN9MNijnmoIHL1fX3hwE+cFpd76nBlaaog4DF8MIgFA/9A/YkYfe0HIVtyjLTr8vG0jcHTYYyKbcQh3bTqbb6uTiC3+o2Nf5nGjW2HpBJ/i1hWUn4iCxy5G9yeNTeY1gY7+JkwmwscvSH0CFs7jN2oixbQJfpQUV0=AQABCN=HALLAN-SVR\dahallCCjY6ygVvTNajoPYbQwCMyH029BKjk0ZUiChQIMIel8=c/yOmtIdlzxhCw6cs7RWyUYWE2FTXs/HSH1dnxp+eMEMUXzGmX/RdqWGeD0BaDJMNZ4lUtbzvnFScu2DC/bdiXKlEtyk/LkTogJ0QcUDJ7xJfChsJn3Z1ltu4Z489GKf0JlhQSAXXuoiWjsdcXl07OrZGO+sd6ypJ0ck4IwktG8=oRmIlhlWiHFN9MNijnmoIHL1fX3hwE+cFpd76nBlaaog4DF8MIgFA/9A/YkYfe0HIVtyjLTr8vG0jcHTYYyKbcQh3bTqbb6uTiC3+o2Nf5nGjW2HpBJ/i1hWUn4iCxy5G9yeNTeY1gY7+JkwmwscvSH0CFs7jN2oixbQJfpQUV0=AQABMIIB3TCCAUagAwIBAgIQZnQMaQSltIxAJdZREueVQDANBgkqhkiG9w0BAQsFADAtMSswKQYDVQQDHiIASABBAEwATABBAE4ALQBTAFYAUgBcAGQAYQBoAGEAbABsMB4XDTIwMDkwNDE2NDE0NFoXDTIxMDkwNDIyNDE0NFowLTErMCkGA1UEAx4iAEgAQQBMAEwAQQBOAC0AUwBWAFIAXABkAGEAaABhAGwAbDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoRmIlhlWiHFN9MNijnmoIHL1fX3hwE+cFpd76nBlaaog4DF8MIgFA/9A/YkYfe0HIVtyjLTr8vG0jcHTYYyKbcQh3bTqbb6uTiC3+o2Nf5nGjW2HpBJ/i1hWUn4iCxy5G9yeNTeY1gY7+JkwmwscvSH0CFs7jN2oixbQJfpQUV0CAwEAATANBgkqhkiG9w0BAQsFAAOBgQBGFz/q1KVTsdulm/JUIBE9URhX/XvyOCeaucgC9qlsjtz0jI1sdgW5OQovHDcwnmqpMfhi7MZu4mZ+HYoInYfPTE9/xLw2/m3wE5qjScrQwo8BmVO/oJJRnO+WIKL75QDvj5/ADn6yV5/UJVo6jNXKU4T2X3R1uXGQUPuIkSgtyQ== -------------------------------------------------------------------------------- /publish/publish.htm: -------------------------------------------------------------------------------- 1 |  2 | 3 | Task Scheduler Config 4 | 5 | 48 | 49 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 163 | 164 |
127 | 128 | 129 |
 
Name:Task Scheduler Config
 
Version:2.8.1.0
 
Publisher:OpenSource Community
 
130 | 131 | 132 | 133 | 134 |
The following prerequisites are required:
 
    135 |
  • Microsoft .NET Framework 4.5.2 (x86 and x64)
  • 136 |
137 | If these components are already installed, you can launch the application now. Otherwise, click the button below to install the prerequisites and run the application. 138 |
 
139 | 140 | 141 | 142 |
143 | 144 |
Install
 
155 | 156 |
157 | OpenSource Community Customer Support 158 |    ::    159 | ClickOnce and .NET Framework Resources 160 |
161 | 162 |
165 | 166 | -------------------------------------------------------------------------------- /publish/setup.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahall/TaskSchedulerConfig/7a0adde4579b34572b9ab9b4c5eb222b1f3329b9/publish/setup.exe --------------------------------------------------------------------------------