PoshCode Archive  Hex Artifact Content

Artifact 80f19c25d2387fc918fbd6345eed13b52ed2023c7106b09b7a785658c4843784:

  • File pslauncher.ps1 — part of check-in [b0d3781985] at 2018-06-10 12:56:18 on branch trunk — Requires V2 (user: cz9qvh size: 7004)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 63 73 68 61 72 70  i..# api: csharp
0020: 0d 0a 23 20 74 69 74 6c 65 3a 20 70 73 6c 61 75  ..# title: pslau
0030: 6e 63 68 65 72 0d 0a 23 20 64 65 73 63 72 69 70  ncher..# descrip
0040: 74 69 6f 6e 3a 20 52 65 71 75 69 72 65 73 20 56  tion: Requires V
0050: 32 0d 0a 23 20 76 65 72 73 69 6f 6e 3a 20 31 2e  2..# version: 1.
0060: 30 0d 0a 23 20 74 79 70 65 3a 20 73 63 72 69 70  0..# type: scrip
0070: 74 0d 0a 23 20 61 75 74 68 6f 72 3a 20 63 7a 39  t..# author: cz9
0080: 71 76 68 0d 0a 23 20 6c 69 63 65 6e 73 65 3a 20  qvh..# license: 
0090: 43 43 30 0d 0a 23 20 78 2d 70 6f 73 68 63 6f 64  CC0..# x-poshcod
00a0: 65 2d 69 64 3a 20 31 30 34 33 0d 0a 23 20 78 2d  e-id: 1043..# x-
00b0: 61 72 63 68 69 76 65 64 3a 20 32 30 30 39 2d 30  archived: 2009-0
00c0: 36 2d 30 35 54 31 36 3a 35 38 3a 35 35 0d 0a 23  6-05T16:58:55..#
00d0: 0d 0a 23 0d 0a 2f 2a 0d 0a 20 2a 20 43 6f 6d 70  ..#../*.. * Comp
00e0: 69 6c 65 20 74 68 69 73 20 70 72 6f 67 72 61 6d  ile this program
00f0: 20 62 79 20 73 69 6d 70 6c 79 20 64 6f 69 6e 67   by simply doing
0100: 3a 0d 0a 20 2a 20 0d 0a 20 2a 20 63 73 63 2e 65  :.. * .. * csc.e
0110: 78 65 20 50 53 4c 61 75 6e 63 68 65 72 2e 63 73  xe PSLauncher.cs
0120: 0d 0a 20 2a 20 0d 0a 20 2a 2f 0d 0a 0d 0a 2f 2f  .. * .. */....//
0130: 20 52 65 71 75 69 72 65 73 20 70 6f 77 65 72 73   Requires powers
0140: 68 65 6c 6c 20 56 32 0d 0a 0d 0a 2f 2a 0d 0a 20  hell V2..../*.. 
0150: 2a 20 54 68 65 20 50 72 6f 62 6c 65 6d 3a 0d 0a  * The Problem:..
0160: 20 2a 20 20 20 20 20 20 2e 70 73 31 20 73 63 72   *      .ps1 scr
0170: 69 70 74 73 20 64 6f 20 6e 6f 74 20 69 6e 74 65  ipts do not inte
0180: 67 72 61 74 65 20 77 69 74 68 20 74 68 65 20 73  grate with the s
0190: 68 65 6c 6c 20 6e 69 63 65 6c 79 2e 20 20 59 6f  hell nicely.  Yo
01a0: 75 20 63 61 6e 6e 6f 74 0d 0a 20 2a 20 20 20 20  u cannot.. *    
01b0: 20 20 73 69 6d 70 6c 79 20 61 73 73 6f 63 69 61    simply associa
01c0: 74 65 20 70 6f 77 65 72 73 68 65 6c 6c 2e 65 78  te powershell.ex
01d0: 65 20 77 69 74 68 20 2e 70 73 31 20 61 6e 64 20  e with .ps1 and 
01e0: 68 61 76 65 20 74 68 65 6d 20 72 75 6e 20 77 68  have them run wh
01f0: 65 6e 20 75 0d 0a 20 2a 20 20 20 20 20 20 64 6f  en u.. *      do
0200: 75 62 6c 65 20 63 6c 69 63 6b 20 74 68 65 6d 2e  uble click them.
0210: 20 20 41 6c 73 6f 2c 20 74 68 65 20 65 78 65 63    Also, the exec
0220: 75 74 69 6f 6e 20 6f 66 20 73 63 72 69 70 74 20  ution of script 
0230: 79 6f 75 20 63 6c 69 63 6b 20 6f 6e 20 6d 61 79  you click on may
0240: 0d 0a 20 2a 20 20 20 20 20 20 62 65 20 62 6c 6f  .. *      be blo
0250: 63 6b 65 64 20 62 79 20 73 65 63 75 72 69 74 79  cked by security
0260: 20 70 6f 6c 69 63 69 65 73 2e 20 20 54 68 69 72   policies.  Thir
0270: 64 6c 79 2c 20 73 6f 6d 65 20 70 6f 77 65 72 73  dly, some powers
0280: 68 65 6c 6c 20 73 63 72 69 70 74 73 0d 0a 20 2a  hell scripts.. *
0290: 20 20 20 20 20 20 72 65 71 75 69 72 65 20 70 73        require ps
02a0: 20 74 6f 20 62 65 20 6c 61 75 6e 63 68 65 64 20   to be launched 
02b0: 77 69 74 68 20 73 6f 6d 65 20 63 6f 6d 6d 61 6e  with some comman
02c0: 64 20 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 73  d line arguments
02d0: 2c 20 74 6f 20 66 72 65 71 75 65 6e 74 6c 79 0d  , to frequently.
02e0: 0a 20 2a 20 20 20 20 20 20 72 75 6e 20 73 75 63  . *      run suc
02f0: 68 20 61 20 73 63 72 69 70 74 20 74 68 65 6e 20  h a script then 
0300: 72 65 71 75 69 72 65 73 20 6b 65 79 62 6f 61 72  requires keyboar
0310: 64 20 65 6e 74 72 79 20 6f 72 20 61 77 6b 77 61  d entry or awkwa
0320: 72 64 20 62 61 74 63 68 20 66 69 6c 65 73 2e 0d  rd batch files..
0330: 0a 20 2a 20 0d 0a 20 2a 20 54 68 65 20 53 6f 6c  . * .. * The Sol
0340: 75 74 69 6f 6e 3a 0d 0a 20 2a 20 20 20 20 20 20  ution:.. *      
0350: 43 6f 6d 70 69 6c 65 20 74 68 69 73 20 70 72 6f  Compile this pro
0360: 67 72 61 6d 2c 20 61 6e 64 20 61 73 73 6f 63 69  gram, and associ
0370: 61 74 65 20 69 74 20 61 73 20 74 68 65 20 64 65  ate it as the de
0380: 66 61 75 6c 74 20 6c 61 75 6e 63 68 65 72 20 66  fault launcher f
0390: 6f 72 20 2e 70 73 31 2e 0d 0a 20 2a 20 20 20 20  or .ps1... *    
03a0: 20 20 66 6f 6c 6c 6f 77 20 74 68 65 20 75 73 61    follow the usa
03b0: 67 65 20 64 65 74 61 69 6c 73 20 62 65 6c 6f 77  ge details below
03c0: 2c 20 61 6e 64 20 79 6f 75 20 77 69 6c 6c 20 62  , and you will b
03d0: 65 20 61 62 6c 65 20 74 6f 20 6c 61 75 6e 63 68  e able to launch
03e0: 20 2e 70 73 31 20 73 63 72 69 70 74 73 0d 0a 20   .ps1 scripts.. 
03f0: 2a 20 20 20 20 20 20 66 72 6f 6d 20 74 68 65 20  *      from the 
0400: 73 68 65 6c 6c 20 77 69 74 68 20 6d 6f 75 73 65  shell with mouse
0410: 20 61 6c 6f 6e 65 2c 20 61 6e 64 20 61 73 20 61   alone, and as a
0420: 64 64 65 64 20 62 65 6e 61 66 69 74 20 79 6f 75  dded benafit you
0430: 20 67 65 74 20 74 6f 20 70 75 74 0d 0a 20 2a 20   get to put.. * 
0440: 20 20 20 20 20 70 73 20 63 6d 64 20 6c 69 6e 65       ps cmd line
0450: 20 6f 70 74 69 6f 6e 73 20 69 6e 20 79 6f 75 72   options in your
0460: 20 73 63 72 69 70 74 2c 20 61 6e 64 20 79 6f 75   script, and you
0470: 20 63 61 6e 20 72 75 6e 20 73 63 72 69 70 74 73   can run scripts
0480: 20 69 6e 76 69 73 69 62 6c 65 2e 0d 0a 20 2a 20   invisible... * 
0490: 0d 0a 20 2a 20 55 53 41 47 45 3a 0d 0a 20 2a 20  .. * USAGE:.. * 
04a0: 20 20 20 20 20 50 75 74 20 74 68 65 20 66 69 72       Put the fir
04b0: 73 74 20 74 77 6f 20 63 68 61 72 61 63 74 65 72  st two character
04c0: 73 20 6f 66 20 79 6f 75 72 20 73 63 72 69 70 74  s of your script
04d0: 20 61 73 20 22 23 21 22 0d 0a 20 2a 20 20 20 20   as "#!".. *    
04e0: 20 20 46 6f 6c 6c 6f 77 20 74 68 61 74 20 77 69    Follow that wi
04f0: 74 68 20 74 68 65 20 66 75 6c 6c 20 70 61 74 68  th the full path
0500: 20 74 6f 20 70 6f 77 65 72 73 68 65 6c 6c 2e 65   to powershell.e
0510: 78 65 20 28 69 6e 63 6c 20 66 6e 61 6d 65 29 20  xe (incl fname) 
0520: 6f 72 0d 0a 20 2a 20 20 20 20 20 20 69 66 20 70  or.. *      if p
0530: 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65 20 69 73  owershell.exe is
0540: 20 69 6e 20 74 68 65 20 70 61 74 68 20 79 6f 75   in the path you
0550: 20 63 61 6e 20 6a 75 73 74 20 70 75 74 20 23 21   can just put #!
0560: 70 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65 0d 0a  powershell.exe..
0570: 20 2a 20 0d 0a 20 2a 20 20 20 20 20 20 54 68 65   * .. *      The
0580: 20 72 65 6d 61 69 6e 64 65 72 20 70 61 72 74 20   remainder part 
0590: 6f 66 20 74 68 61 74 20 6c 69 6e 65 20 77 69 6c  of that line wil
05a0: 6c 20 62 65 20 70 61 73 73 65 64 20 74 6f 20 70  l be passed to p
05b0: 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65 20 61 73  owershell.exe as
05c0: 0d 0a 20 2a 20 20 20 20 20 20 61 72 67 75 6d 65  .. *      argume
05d0: 6e 74 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  nts.  For exampl
05e0: 65 2c 20 2d 53 54 41 2e 20 20 54 68 65 20 66 69  e, -STA.  The fi
05f0: 6c 65 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 63  lename of the sc
0600: 72 69 70 74 20 69 73 20 61 6c 73 6f 0d 0a 20 2a  ript is also.. *
0610: 20 20 20 20 20 20 70 61 73 73 65 64 20 61 73 20        passed as 
0620: 22 2d 66 69 6c 65 20 25 31 22 20 61 6c 6f 6e 67  "-file %1" along
0630: 20 77 69 74 68 20 22 2d 45 78 65 63 75 74 69 6f   with "-Executio
0640: 6e 50 6f 6c 69 63 79 20 55 6e 52 65 73 74 72 69  nPolicy UnRestri
0650: 63 74 65 64 22 2e 0d 0a 20 2a 20 0d 0a 20 2a 20  cted"... * .. * 
0660: 20 20 20 20 20 54 68 65 20 73 65 63 6f 6e 64 20       The second 
0670: 6c 69 6e 65 20 6f 66 20 74 68 65 20 66 69 6c 65  line of the file
0680: 2c 20 69 66 20 69 74 20 69 73 20 70 72 65 66 69  , if it is prefi
0690: 78 65 64 20 62 79 20 22 23 2d 22 20 63 61 6e 20  xed by "#-" can 
06a0: 63 6f 6e 74 61 69 6e 20 22 6d 65 74 61 20 61 72  contain "meta ar
06b0: 67 75 6d 65 6e 74 73 22 0d 0a 20 2a 20 20 20 20  guments".. *    
06c0: 20 20 66 6f 72 20 70 6f 77 65 72 73 68 65 6c 6c    for powershell
06d0: 2e 20 20 43 75 72 72 65 6e 74 6c 79 20 74 68 65  .  Currently the
06e0: 20 6f 6e 6c 79 20 6f 6e 65 20 61 6c 6c 6f 77 65   only one allowe
06f0: 64 20 69 73 20 22 48 69 64 64 65 6e 22 20 77 68  d is "Hidden" wh
0700: 69 63 68 20 77 69 6c 6c 20 73 75 70 72 65 73 73  ich will supress
0710: 20 74 68 65 0d 0a 20 2a 20 20 20 20 20 20 70 6f   the.. *      po
0720: 77 65 72 73 68 65 6c 6c 20 77 69 6e 64 6f 77 20  wershell window 
0730: 61 6e 64 20 64 69 73 63 61 72 64 20 61 6e 79 20  and discard any 
0740: 6f 75 74 70 75 74 20 66 72 6f 6d 20 74 68 65 20  output from the 
0750: 73 63 72 69 70 74 2e 0d 0a 20 2a 20 0d 0a 20 2a  script... * .. *
0760: 20 20 20 20 20 20 49 66 20 61 20 2e 70 73 31 20        If a .ps1 
0770: 73 63 72 69 70 74 20 77 69 74 68 6f 75 74 20 74  script without t
0780: 68 65 73 65 20 6d 61 67 69 63 73 20 23 21 20 69  hese magics #! i
0790: 73 20 65 6e 63 6f 75 6e 74 65 72 65 64 2c 20 69  s encountered, i
07a0: 74 20 77 69 6c 6c 20 62 65 20 70 61 73 73 65 64  t will be passed
07b0: 0d 0a 20 2a 20 20 20 20 20 20 74 6f 20 70 6f 77  .. *      to pow
07c0: 65 72 73 68 65 6c 6c 2e 65 78 65 20 61 73 20 61  ershell.exe as a
07d0: 62 6f 76 65 2c 20 69 66 20 70 6f 77 65 72 73 68  bove, if powersh
07e0: 65 6c 6c 2e 65 78 65 20 69 73 20 69 6e 20 74 68  ell.exe is in th
07f0: 65 20 70 61 74 68 20 6f 72 20 64 65 66 61 75 6c  e path or defaul
0800: 74 20 6c 6f 63 61 74 69 6f 6e 2e 0d 0a 20 2a 20  t location... * 
0810: 0d 0a 20 2a 20 45 78 61 6d 70 6c 65 3a 0d 0a 20  .. * Example:.. 
0820: 2a 20 20 20 20 20 20 23 21 70 6f 77 65 72 73 68  *      #!powersh
0830: 65 6c 6c 2e 65 78 65 20 2d 53 54 41 0d 0a 20 2a  ell.exe -STA.. *
0840: 20 20 20 20 20 20 23 2d 48 69 64 64 65 6e 0d 0a        #-Hidden..
0850: 20 2a 20 20 20 20 20 20 2e 2e 2e 72 65 73 74 20   *      ...rest 
0860: 6f 66 20 73 63 72 69 70 74 2e 2e 2e 0d 0a 20 2a  of script..... *
0870: 20 0d 0a 20 2a 20 0d 0a 20 2a 20 20 6f 72 0d 0a   .. * .. *  or..
0880: 20 2a 20 0d 0a 20 2a 20 0d 0a 20 2a 20 20 20 20   * .. * .. *    
0890: 20 20 23 21 43 3a 5c 57 49 4e 44 4f 57 53 5c 73    #!C:\WINDOWS\s
08a0: 79 73 74 65 6d 33 32 5c 77 69 6e 64 6f 77 73 70  ystem32\windowsp
08b0: 6f 77 65 72 73 68 65 6c 6c 5c 76 31 2e 30 5c 70  owershell\v1.0\p
08c0: 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65 20 2d 6e  owershell.exe -n
08d0: 6f 65 78 69 74 0d 0a 20 2a 20 20 20 20 20 20 2e  oexit.. *      .
08e0: 2e 2e 72 65 73 74 20 6f 66 20 61 20 73 63 72 69  ..rest of a scri
08f0: 70 74 20 79 6f 75 20 64 6f 6e 27 74 20 77 61 6e  pt you don't wan
0900: 74 20 74 6f 20 65 78 69 74 20 77 68 65 6e 20 69  t to exit when i
0910: 74 20 65 6e 64 73 2e 2e 2e 0d 0a 20 2a 2f 0d 0a  t ends..... */..
0920: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 3b 0d  ..using System;.
0930: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f  .using System.Co
0940: 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69  llections.Generi
0950: 63 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d  c;..using System
0960: 2e 57 69 6e 64 6f 77 73 2e 46 6f 72 6d 73 3b 0d  .Windows.Forms;.
0970: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 69  .using System.Di
0980: 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 75 73 69 6e  agnostics;..usin
0990: 67 20 53 79 73 74 65 6d 2e 49 4f 3b 0d 0a 75 73  g System.IO;..us
09a0: 69 6e 67 20 53 79 73 74 65 6d 2e 54 65 78 74 2e  ing System.Text.
09b0: 52 65 67 75 6c 61 72 45 78 70 72 65 73 73 69 6f  RegularExpressio
09c0: 6e 73 3b 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65  ns;....namespace
09d0: 20 50 53 4c 61 75 6e 63 68 65 72 0d 0a 7b 0d 0a   PSLauncher..{..
09e0: 20 20 20 20 73 74 61 74 69 63 20 63 6c 61 73 73      static class
09f0: 20 50 53 4c 61 75 6e 63 68 65 72 0d 0a 20 20 20   PSLauncher..   
0a00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20   {..        /// 
0a10: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
0a20: 20 20 20 2f 2f 2f 20 54 68 65 20 6d 61 69 6e 20     /// The main 
0a30: 65 6e 74 72 79 20 70 6f 69 6e 74 20 66 6f 72 20  entry point for 
0a40: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e  the application.
0a50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  ..        /// </
0a60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
0a70: 20 20 5b 53 54 41 54 68 72 65 61 64 5d 0d 0a 20    [STAThread].. 
0a80: 20 20 20 20 20 20 20 73 74 61 74 69 63 20 76 6f         static vo
0a90: 69 64 20 4d 61 69 6e 28 73 74 72 69 6e 67 20 5b  id Main(string [
0aa0: 5d 20 61 72 67 73 29 0d 0a 20 20 20 20 20 20 20  ] args)..       
0ab0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0ac0: 69 66 20 28 61 72 67 73 2e 4c 65 6e 67 74 68 20  if (args.Length 
0ad0: 21 3d 20 31 29 0d 0a 20 20 20 20 20 20 20 20 20  != 1)..         
0ae0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
0af0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
0b00: 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f  ArgumentExceptio
0b10: 6e 28 22 57 72 6f 6e 67 20 6e 75 6d 62 65 72 20  n("Wrong number 
0b20: 6f 66 20 61 72 67 75 6d 65 6e 74 73 2c 20 74 68  of arguments, th
0b30: 65 72 65 20 6d 75 73 74 20 62 65 20 65 78 61 63  ere must be exac
0b40: 74 6c 79 20 6f 6e 65 2e 22 29 3b 0d 0a 20 20 20  tly one.");..   
0b50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
0b60: 20 20 20 20 20 20 20 20 69 66 20 28 21 28 6e 65          if (!(ne
0b70: 77 20 52 65 67 65 78 28 22 2e 70 73 31 24 22 29  w Regex(".ps1$")
0b80: 29 2e 4d 61 74 63 68 28 61 72 67 73 5b 30 5d 29  ).Match(args[0])
0b90: 2e 53 75 63 63 65 73 73 29 0d 0a 20 20 20 20 20  .Success)..     
0ba0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
0bb0: 20 20 20 20 20 20 20 20 20 20 70 73 6c 5f 65 72            psl_er
0bc0: 72 28 22 4d 75 73 74 20 68 61 76 65 20 65 78 74  r("Must have ext
0bd0: 65 6e 73 69 6f 6e 20 6f 66 20 70 73 31 20 6f 72  ension of ps1 or
0be0: 20 70 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65 20   powershell.exe 
0bf0: 77 69 6c 6c 20 65 72 72 6f 72 2e 22 29 3b 0d 0a  will error.");..
0c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c10: 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20  return;..       
0c20: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
0c30: 20 20 20 20 53 74 72 65 61 6d 52 65 61 64 65 72      StreamReader
0c40: 20 66 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   fs;..          
0c50: 20 20 73 74 72 69 6e 67 20 6c 69 6e 65 5f 31 3b    string line_1;
0c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
0c70: 72 69 6e 67 20 6c 69 6e 65 5f 32 3b 0d 0a 20 20  ring line_2;..  
0c80: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
0c90: 20 65 78 65 5f 70 61 74 68 3b 0d 0a 20 20 20 20   exe_path;..    
0ca0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
0cb0: 6d 64 5f 6c 69 6e 65 3b 0d 0a 20 20 20 20 20 20  md_line;..      
0cc0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 70 73 5f        string ps_
0cd0: 61 72 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 20  args;..         
0ce0: 20 20 20 52 65 67 65 78 20 72 3b 0d 0a 20 20 20     Regex r;..   
0cf0: 20 20 20 20 20 20 20 20 20 4d 61 74 63 68 20 6d           Match m
0d00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ;..            b
0d10: 6f 6f 6c 20 68 69 64 64 65 6e 20 3d 20 66 61 6c  ool hidden = fal
0d20: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
0d30: 20 50 72 6f 63 65 73 73 20 70 73 5f 70 72 6f 63   Process ps_proc
0d40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
0d50: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
0d60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
0d70: 20 20 20 20 20 66 73 20 3d 20 6e 65 77 20 53 74       fs = new St
0d80: 72 65 61 6d 52 65 61 64 65 72 28 61 72 67 73 5b  reamReader(args[
0d90: 30 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  0]);..          
0da0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
0db0: 20 63 61 74 63 68 20 28 46 69 6c 65 4e 6f 74 46   catch (FileNotF
0dc0: 6f 75 6e 64 45 78 63 65 70 74 69 6f 6e 29 0d 0a  oundException)..
0dd0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
0de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
0df0: 73 6c 5f 65 72 72 28 22 46 69 6c 65 20 4e 6f 74  sl_err("File Not
0e00: 20 46 6f 75 6e 64 2e 22 29 3b 0d 0a 20 20 20 20   Found.");..    
0e10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
0e20: 72 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rn;..           
0e30: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
0e40: 63 61 74 63 68 20 28 46 69 6c 65 4c 6f 61 64 45  catch (FileLoadE
0e50: 78 63 65 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20  xception)..     
0e60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
0e70: 20 20 20 20 20 20 20 20 20 20 70 73 6c 5f 65 72            psl_er
0e80: 72 28 22 46 69 6c 65 20 66 6f 75 6e 64 20 62 75  r("File found bu
0e90: 74 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 6c  t could not be l
0ea0: 6f 61 64 65 64 2e 22 29 3b 0d 0a 20 20 20 20 20  oaded.");..     
0eb0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
0ec0: 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
0ed0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  }..            t
0ee0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
0ef0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
0f00: 20 20 20 6c 69 6e 65 5f 31 20 3d 20 66 73 2e 52     line_1 = fs.R
0f10: 65 61 64 4c 69 6e 65 28 29 3b 0d 0a 20 20 20 20  eadLine();..    
0f20: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
0f30: 5f 32 20 3d 20 66 73 2e 52 65 61 64 4c 69 6e 65  _2 = fs.ReadLine
0f40: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
0f50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
0f60: 63 61 74 63 68 20 28 49 4f 45 78 63 65 70 74 69  catch (IOExcepti
0f70: 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on)..           
0f80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
0f90: 20 20 20 20 70 73 6c 5f 65 72 72 28 22 46 69 6c      psl_err("Fil
0fa0: 65 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 65  e may not have e
0fb0: 6e 6f 75 67 68 20 6c 69 6e 65 73 2e 22 29 3b 0d  nough lines.");.
0fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0fd0: 20 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20   return;..      
0fe0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
0ff0: 20 20 20 20 20 66 73 2e 43 6c 6f 73 65 28 29 3b       fs.Close();
1000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 20  ..            r 
1010: 20 20 20 20 20 20 20 3d 20 6e 65 77 20 52 65 67         = new Reg
1020: 65 78 28 40 22 5e 23 21 28 2e 2a 29 70 6f 77 65  ex(@"^#!(.*)powe
1030: 72 73 68 65 6c 6c 5c 2e 65 78 65 22 29 3b 0d 0a  rshell\.exe");..
1040: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 65 5f              exe_
1050: 70 61 74 68 20 3d 20 22 22 3b 0d 0a 20 20 20 20  path = "";..    
1060: 20 20 20 20 20 20 20 20 69 66 20 28 28 6d 20 3d          if ((m =
1070: 20 72 2e 4d 61 74 63 68 28 6c 69 6e 65 5f 31 29   r.Match(line_1)
1080: 29 2e 53 75 63 63 65 73 73 29 20 0d 0a 20 20 20  ).Success) ..   
1090: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10a0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65              line
10b0: 5f 31 20 20 20 3d 20 72 2e 52 65 70 6c 61 63 65  _1   = r.Replace
10c0: 28 6c 69 6e 65 5f 31 2c 20 22 22 29 3b 0d 0a 20  (line_1, "");.. 
10d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
10e0: 78 65 5f 70 61 74 68 20 3d 20 6d 2e 47 72 6f 75  xe_path = m.Grou
10f0: 70 73 5b 31 5d 2e 56 61 6c 75 65 3b 0d 0a 20 20  ps[1].Value;..  
1100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1110: 20 28 65 78 65 5f 70 61 74 68 20 20 21 3d 20 22   (exe_path  != "
1120: 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ")..            
1130: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1140: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
1150: 46 69 6c 65 2e 45 78 69 73 74 73 28 65 78 65 5f  File.Exists(exe_
1160: 70 61 74 68 20 2b 20 22 70 6f 77 65 72 73 68 65  path + "powershe
1170: 6c 6c 2e 65 78 65 22 29 29 0d 0a 20 20 20 20 20  ll.exe"))..     
1180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1190: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11a0: 20 20 20 20 20 20 20 20 20 20 70 73 6c 5f 65 72            psl_er
11b0: 72 28 22 73 70 65 63 69 66 69 65 64 20 70 6f 77  r("specified pow
11c0: 65 72 73 68 65 6c 6c 2e 65 78 65 20 66 69 6c 65  ershell.exe file
11d0: 20 6e 6f 74 20 65 78 69 73 74 2e 22 29 3b 0d 0a   not exist.");..
11e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1200: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1210: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
1220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1230: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1240: 20 20 20 20 20 20 20 65 78 65 5f 70 61 74 68 20         exe_path 
1250: 3d 20 66 69 6e 64 5f 70 6f 77 65 72 73 68 65 6c  = find_powershel
1260: 6c 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  l();..          
1270: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 78            if (ex
1280: 65 5f 70 61 74 68 20 3d 3d 20 22 22 29 0d 0a 20  e_path == "").. 
1290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 73                ps
12c0: 6c 5f 65 72 72 28 22 70 6f 77 65 72 73 68 65 6c  l_err("powershel
12d0: 6c 2e 65 78 65 20 69 73 20 6e 6f 74 20 66 6f 75  l.exe is not fou
12e0: 6e 64 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  nd.");..        
12f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1300: 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 20 20 20  return;..       
1310: 20 20 20 20 20 7d 20 20 20 7d 20 20 20 7d 0d 0a       }   }   }..
1320: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1350: 20 6c 69 6e 65 5f 31 20 20 20 3d 20 22 22 3b 0d   line_1   = "";.
1360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1370: 20 65 78 65 5f 70 61 74 68 20 3d 20 66 69 6e 64   exe_path = find
1380: 5f 70 6f 77 65 72 73 68 65 6c 6c 28 29 3b 0d 0a  _powershell();..
1390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a0: 69 66 20 28 65 78 65 5f 70 61 74 68 20 3d 3d 20  if (exe_path == 
13b0: 22 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "")..           
13c0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13d0: 20 20 20 20 20 20 20 20 20 20 20 20 70 73 6c 5f              psl_
13e0: 65 72 72 28 22 70 6f 77 65 72 73 68 65 6c 6c 2e  err("powershell.
13f0: 65 78 65 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64  exe is not found
1400: 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .");..          
1410: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1420: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1430: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1440: 20 20 63 6d 64 5f 6c 69 6e 65 20 3d 20 65 78 65    cmd_line = exe
1450: 5f 70 61 74 68 20 2b 20 22 5c 5c 22 20 2b 20 22  _path + "\\" + "
1460: 70 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65 22 3b  powershell.exe";
1470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 73  ..            ps
1480: 5f 61 72 67 73 20 20 3d 20 6c 69 6e 65 5f 31 20  _args  = line_1 
1490: 2b 20 22 20 2d 45 78 65 63 75 74 69 6f 6e 50 6f  + " -ExecutionPo
14a0: 6c 69 63 79 20 55 6e 52 65 73 74 72 69 63 74 65  licy UnRestricte
14b0: 64 20 2d 46 69 6c 65 20 5c 22 22 20 2b 20 61 72  d -File \"" + ar
14c0: 67 73 5b 30 5d 20 2b 20 22 5c 22 22 3b 0d 0a 20  gs[0] + "\"";.. 
14d0: 20 20 20 20 20 20 20 20 20 20 20 72 20 20 20 20             r    
14e0: 20 20 20 20 3d 20 6e 65 77 20 52 65 67 65 78 28      = new Regex(
14f0: 22 5e 23 2d 22 29 3b 0d 0a 20 20 20 20 20 20 20  "^#-");..       
1500: 20 20 20 20 20 69 66 20 28 28 6d 20 3d 20 72 2e       if ((m = r.
1510: 4d 61 74 63 68 28 6c 69 6e 65 5f 32 29 29 2e 53  Match(line_2)).S
1520: 75 63 63 65 73 73 29 0d 0a 20 20 20 20 20 20 20  uccess)..       
1530: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1540: 20 20 20 20 20 20 20 20 6c 69 6e 65 5f 32 20 3d          line_2 =
1550: 20 72 2e 52 65 70 6c 61 63 65 28 6c 69 6e 65 5f   r.Replace(line_
1560: 32 2c 20 22 22 29 3b 0d 0a 20 20 20 20 20 20 20  2, "");..       
1570: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 6e 65           if ((ne
1580: 77 20 52 65 67 65 78 28 22 48 69 64 64 65 6e 22  w Regex("Hidden"
1590: 29 29 2e 4d 61 74 63 68 28 6c 69 6e 65 5f 32 29  )).Match(line_2)
15a0: 2e 53 75 63 63 65 73 73 29 0d 0a 20 20 20 20 20  .Success)..     
15b0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d0: 20 20 68 69 64 64 65 6e 20 3d 20 74 72 75 65 3b    hidden = true;
15e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  ..            } 
15f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1600: 20 70 73 5f 70 72 6f 63 20 3d 20 6e 65 77 20 50   ps_proc = new P
1610: 72 6f 63 65 73 73 28 29 3b 0d 0a 0d 0a 20 20 20  rocess();....   
1620: 20 20 20 20 20 20 20 20 20 69 66 20 28 68 69 64           if (hid
1630: 64 65 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20  den)..          
1640: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1650: 20 20 20 20 20 70 73 5f 70 72 6f 63 2e 53 74 61       ps_proc.Sta
1660: 72 74 49 6e 66 6f 2e 52 65 64 69 72 65 63 74 53  rtInfo.RedirectS
1670: 74 61 6e 64 61 72 64 45 72 72 6f 72 20 20 3d 20  tandardError  = 
1680: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
1690: 20 20 20 20 20 20 20 70 73 5f 70 72 6f 63 2e 53         ps_proc.S
16a0: 74 61 72 74 49 6e 66 6f 2e 52 65 64 69 72 65 63  tartInfo.Redirec
16b0: 74 53 74 61 6e 64 61 72 64 49 6e 70 75 74 20 20  tStandardInput  
16c0: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
16d0: 20 20 20 20 20 20 20 20 20 70 73 5f 70 72 6f 63           ps_proc
16e0: 2e 53 74 61 72 74 49 6e 66 6f 2e 52 65 64 69 72  .StartInfo.Redir
16f0: 65 63 74 53 74 61 6e 64 61 72 64 4f 75 74 70 75  ectStandardOutpu
1700: 74 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  t = true;..     
1710: 20 20 20 20 20 20 20 20 20 20 20 70 73 5f 70 72             ps_pr
1720: 6f 63 2e 53 74 61 72 74 49 6e 66 6f 2e 43 72 65  oc.StartInfo.Cre
1730: 61 74 65 4e 6f 57 69 6e 64 6f 77 20 3d 20 74 72  ateNoWindow = tr
1740: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
1750: 20 20 20 20 20 70 73 5f 70 72 6f 63 2e 53 74 61       ps_proc.Sta
1760: 72 74 49 6e 66 6f 2e 55 73 65 53 68 65 6c 6c 45  rtInfo.UseShellE
1770: 78 65 63 75 74 65 20 3d 20 66 61 6c 73 65 3b 0d  xecute = false;.
1780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1790: 20 20 20 20 20 20 20 20 20 20 20 20 70 73 5f 70              ps_p
17a0: 72 6f 63 2e 53 74 61 72 74 49 6e 66 6f 2e 41 72  roc.StartInfo.Ar
17b0: 67 75 6d 65 6e 74 73 20 3d 20 70 73 5f 61 72 67  guments = ps_arg
17c0: 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s;..            
17d0: 70 73 5f 70 72 6f 63 2e 53 74 61 72 74 49 6e 66  ps_proc.StartInf
17e0: 6f 2e 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6d 64  o.FileName = cmd
17f0: 5f 6c 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20  _line;..        
1800: 20 20 20 20 70 73 5f 70 72 6f 63 2e 53 74 61 72      ps_proc.Star
1810: 74 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t();..        }.
1820: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1830: 20 73 74 61 74 69 63 20 76 6f 69 64 20 70 73 6c   static void psl
1840: 5f 65 72 72 28 73 74 72 69 6e 67 20 6d 73 67 29  _err(string msg)
1850: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
1860: 20 20 20 20 20 20 20 20 20 4d 65 73 73 61 67 65           Message
1870: 42 6f 78 2e 53 68 6f 77 28 6d 73 67 2c 20 22 50  Box.Show(msg, "P
1880: 53 4c 61 75 6e 63 68 65 72 20 43 72 69 74 69 63  SLauncher Critic
1890: 61 6c 20 45 72 72 6f 72 22 2c 20 4d 65 73 73 61  al Error", Messa
18a0: 67 65 42 6f 78 42 75 74 74 6f 6e 73 2e 4f 4b 2c  geBoxButtons.OK,
18b0: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ..             
18c0: 20 20 20 4d 65 73 73 61 67 65 42 6f 78 49 63 6f     MessageBoxIco
18d0: 6e 2e 45 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20  n.Error);..     
18e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 70 72     }..        pr
18f0: 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
1900: 69 6e 67 20 66 69 6e 64 5f 70 6f 77 65 72 73 68  ing find_powersh
1910: 65 6c 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ell()..        {
1920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
1930: 72 69 6e 67 20 65 78 65 5f 70 61 74 68 20 3d 20  ring exe_path = 
1940: 22 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "";..           
1950: 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67   foreach (string
1960: 20 74 65 73 74 5f 70 61 74 68 20 69 6e 0d 0a 20   test_path in.. 
1970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1980: 20 20 20 20 20 20 20 45 6e 76 69 72 6f 6e 6d 65         Environme
1990: 6e 74 2e 47 65 74 45 6e 76 69 72 6f 6e 6d 65 6e  nt.GetEnvironmen
19a0: 74 56 61 72 69 61 62 6c 65 28 22 50 61 74 68 22  tVariable("Path"
19b0: 29 2e 53 70 6c 69 74 28 27 3b 27 29 29 0d 0a 20  ).Split(';')).. 
19c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
19e0: 20 28 46 69 6c 65 2e 45 78 69 73 74 73 28 74 65   (File.Exists(te
19f0: 73 74 5f 70 61 74 68 20 2b 20 22 5c 5c 22 20 2b  st_path + "\\" +
1a00: 20 22 70 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65   "powershell.exe
1a10: 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
1a20: 20 20 20 20 20 20 20 20 20 65 78 65 5f 70 61 74           exe_pat
1a30: 68 20 3d 20 74 65 73 74 5f 70 61 74 68 3b 0d 0a  h = test_path;..
1a40: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1a50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
1a60: 78 65 5f 70 61 74 68 20 3d 3d 20 22 22 20 26 26  xe_path == "" &&
1a70: 20 46 69 6c 65 2e 45 78 69 73 74 73 28 0d 0a 20   File.Exists(.. 
1a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1a90: 43 3a 5c 5c 57 49 4e 44 4f 57 53 5c 5c 73 79 73  C:\\WINDOWS\\sys
1aa0: 74 65 6d 33 32 5c 5c 77 69 6e 64 6f 77 73 70 6f  tem32\\windowspo
1ab0: 77 65 72 73 68 65 6c 6c 5c 5c 76 31 2e 30 5c 5c  wershell\\v1.0\\
1ac0: 70 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65 22 29  powershell.exe")
1ad0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1ae0: 20 20 20 65 78 65 5f 70 61 74 68 20 3d 20 22 43     exe_path = "C
1af0: 3a 5c 5c 57 49 4e 44 4f 57 53 5c 5c 73 79 73 74  :\\WINDOWS\\syst
1b00: 65 6d 33 32 5c 5c 77 69 6e 64 6f 77 73 70 6f 77  em32\\windowspow
1b10: 65 72 73 68 65 6c 6c 5c 5c 76 31 2e 30 5c 5c 70  ershell\\v1.0\\p
1b20: 6f 77 65 72 73 68 65 6c 6c 2e 65 78 65 22 3b 0d  owershell.exe";.
1b30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
1b40: 65 74 75 72 6e 20 65 78 65 5f 70 61 74 68 3b 0d  eturn exe_path;.
1b50: 0a 7d 20 20 20 7d 20 20 20 7d 0d 0a              .}   }   }..