PoshCode Archive  Hex Artifact Content

Artifact b6659b194d91881b2a1be895cfa5589fd3a061b061971f11eb8630658767137d:

  • File jumper-psm1.ps1 — part of check-in [5bc7cdfc31] at 2018-06-10 13:51:16 on branch trunk — Usage: (user: greg zakharov size: 4813)

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 70 6f 77 65 72 73  i..# api: powers
0020: 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65 3a 20 6a  hell..# title: j
0030: 75 6d 70 65 72 2e 70 73 6d 31 0d 0a 23 20 64 65  umper.psm1..# de
0040: 73 63 72 69 70 74 69 6f 6e 3a 20 55 73 61 67 65  scription: Usage
0050: 3a 0d 0a 23 20 76 65 72 73 69 6f 6e 3a 20 30 2e  :..# version: 0.
0060: 31 0d 0a 23 20 74 79 70 65 3a 20 63 6c 61 73 73  1..# type: class
0070: 0d 0a 23 20 61 75 74 68 6f 72 3a 20 67 72 65 67  ..# author: greg
0080: 20 7a 61 6b 68 61 72 6f 76 0d 0a 23 20 6c 69 63   zakharov..# lic
0090: 65 6e 73 65 3a 20 43 43 30 0d 0a 23 20 66 75 6e  ense: CC0..# fun
00a0: 63 74 69 6f 6e 3a 20 50 75 73 68 2d 50 61 74 68  ction: Push-Path
00b0: 0d 0a 23 20 78 2d 70 6f 73 68 63 6f 64 65 2d 69  ..# x-poshcode-i
00c0: 64 3a 20 35 31 36 38 0d 0a 23 20 78 2d 61 72 63  d: 5168..# x-arc
00d0: 68 69 76 65 64 3a 20 32 30 31 36 2d 30 33 2d 32  hived: 2016-03-2
00e0: 31 54 30 37 3a 33 39 3a 30 36 0d 0a 23 20 78 2d  1T07:39:06..# x-
00f0: 70 75 62 6c 69 73 68 65 64 3a 20 32 30 31 36 2d  published: 2016-
0100: 30 35 2d 32 30 54 31 33 3a 35 34 3a 30 30 0d 0a  05-20T13:54:00..
0110: 23 0d 0a 23 20 50 53 3e 20 49 6d 70 6f 72 74 2d  #..# PS> Import-
0120: 4d 6f 64 75 6c 65 20 6a 75 6d 70 65 72 0d 0a 23  Module jumper..#
0130: 20 23 6e 6f 77 20 75 20 72 20 72 65 61 64 79 20   #now u r ready 
0140: 74 6f 20 6a 75 6d 70 2e 20 66 6f 72 20 65 78 61  to jump. for exa
0150: 6d 70 6c 65 0d 0a 23 20 50 53 3e 20 6a 75 6d 70  mple..# PS> jump
0160: 65 72 20 58 3a 5c 62 69 6e 0d 0a 23 20 23 6f 72  er X:\bin..# #or
0170: 0d 0a 23 20 50 53 3e 20 50 75 73 68 2d 50 61 74  ..# PS> Push-Pat
0180: 68 20 58 3a 5c 62 69 6e 0d 0a 23 20 23 6a 75 6d  h X:\bin..# #jum
0190: 70 20 74 6f 20 61 20 72 65 67 69 73 74 72 79 20  p to a registry 
01a0: 70 61 74 68 0d 0a 23 20 50 53 3e 20 6a 75 6d 70  path..# PS> jump
01b0: 65 72 20 68 6b 63 75 5c 73 6f 66 74 77 61 72 65  er hkcu\software
01c0: 5c 6d 69 63 72 6f 73 6f 66 74 5c 77 69 6e 64 6f  \microsoft\windo
01d0: 77 73 5c 63 75 72 72 65 6e 74 76 65 72 73 69 6f  ws\currentversio
01e0: 6e 0d 0a 23 20 23 6f 72 0d 0a 23 20 50 53 3e 20  n..# #or..# PS> 
01f0: 50 75 73 68 2d 50 61 74 68 20 68 6b 63 75 5c 73  Push-Path hkcu\s
0200: 6f 66 74 77 61 72 65 5c 6d 69 63 72 6f 73 6f 66  oftware\microsof
0210: 74 5c 77 69 6e 64 6f 77 73 5c 63 75 72 72 65 6e  t\windows\curren
0220: 74 76 65 72 73 69 6f 6e 0d 0a 23 20 50 2e 53 2e  tversion..# P.S.
0230: 20 74 6f 20 4a 65 66 66 20 48 69 63 6b 73 20 61   to Jeff Hicks a
0240: 62 6f 75 74 20 61 73 79 6c 75 6d 2e 20 49 74 20  bout asylum. It 
0250: 77 61 73 20 61 20 6a 6f 6b 65 20 3a 29 0d 0a 23  was a joke :)..#
0260: 0d 0a 72 65 71 75 69 72 65 73 20 2d 76 65 72 73  ..requires -vers
0270: 69 6f 6e 20 32 2e 30 0d 0a 69 66 20 28 21 28 54  ion 2.0..if (!(T
0280: 65 73 74 2d 50 61 74 68 20 61 6c 69 61 73 3a 6a  est-Path alias:j
0290: 75 6d 70 65 72 29 29 20 7b 20 53 65 74 2d 41 6c  umper)) { Set-Al
02a0: 69 61 73 20 6a 75 6d 70 65 72 20 50 75 73 68 2d  ias jumper Push-
02b0: 50 61 74 68 20 7d 0d 0a 0d 0a 24 61 73 6d 20 3d  Path }....$asm =
02c0: 20 41 64 64 2d 54 79 70 65 20 2d 4d 65 6d 62 65   Add-Type -Membe
02d0: 72 44 65 66 69 6e 69 74 69 6f 6e 20 40 27 0d 0a  rDefinition @'..
02e0: 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22      [DllImport("
02f0: 6b 65 72 6e 65 6c 33 32 2e 64 6c 6c 22 29 5d 0d  kernel32.dll")].
0300: 0a 20 20 20 20 5b 72 65 74 75 72 6e 3a 20 4d 61  .    [return: Ma
0310: 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61 67 65  rshalAs(Unmanage
0320: 64 54 79 70 65 2e 42 6f 6f 6c 29 5d 0d 0a 20 20  dType.Bool)]..  
0330: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
0340: 63 20 65 78 74 65 72 6e 20 42 6f 6f 6c 65 61 6e  c extern Boolean
0350: 20 43 6c 6f 73 65 48 61 6e 64 6c 65 28 49 6e 74   CloseHandle(Int
0360: 50 74 72 20 68 4f 62 6a 65 63 74 29 3b 0d 0a 20  Ptr hObject);.. 
0370: 20 20 20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70     ..    [DllImp
0380: 6f 72 74 28 22 6b 65 72 6e 65 6c 33 32 2e 64 6c  ort("kernel32.dl
0390: 6c 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e  l")]..    intern
03a0: 61 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e  al static extern
03b0: 20 49 6e 74 50 74 72 20 4f 70 65 6e 50 72 6f 63   IntPtr OpenProc
03c0: 65 73 73 28 0d 0a 20 20 20 20 20 20 20 20 55 49  ess(..        UI
03d0: 6e 74 33 32 20 64 77 44 65 73 69 72 65 64 41 63  nt32 dwDesiredAc
03e0: 63 65 73 73 2c 0d 0a 20 20 20 20 20 20 20 20 5b  cess,..        [
03f0: 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e 61  MarshalAs(Unmana
0400: 67 65 64 54 79 70 65 2e 42 6f 6f 6c 29 5d 42 6f  gedType.Bool)]Bo
0410: 6f 6c 65 61 6e 20 62 49 6e 68 65 72 69 74 48 61  olean bInheritHa
0420: 6e 64 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20 55  ndle,..        U
0430: 49 6e 74 33 32 20 64 77 50 72 6f 63 65 73 73 49  Int32 dwProcessI
0440: 64 0d 0a 20 20 20 20 29 3b 0d 0a 20 20 20 20 0d  d..    );..    .
0450: 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28  .    [DllImport(
0460: 22 75 73 65 72 33 32 2e 64 6c 6c 22 2c 20 43 68  "user32.dll", Ch
0470: 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e  arSet = CharSet.
0480: 55 6e 69 63 6f 64 65 29 5d 0d 0a 20 20 20 20 69  Unicode)]..    i
0490: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65  nternal static e
04a0: 78 74 65 72 6e 20 49 6e 74 50 74 72 20 46 69 6e  xtern IntPtr Fin
04b0: 64 57 69 6e 64 6f 77 28 0d 0a 20 20 20 20 20 20  dWindow(..      
04c0: 20 20 53 74 72 69 6e 67 20 6c 70 43 6c 61 73 73    String lpClass
04d0: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 53  Name,..        S
04e0: 74 72 69 6e 67 20 6c 70 57 69 6e 64 6f 77 4e 61  tring lpWindowNa
04f0: 6d 65 0d 0a 20 20 20 20 29 3b 0d 0a 20 20 20 20  me..    );..    
0500: 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74  ..    [DllImport
0510: 28 22 75 73 65 72 33 32 2e 64 6c 6c 22 2c 20 43  ("user32.dll", C
0520: 68 61 72 53 65 74 20 3d 20 43 68 61 72 53 65 74  harSet = CharSet
0530: 2e 55 6e 69 63 6f 64 65 29 5d 0d 0a 20 20 20 20  .Unicode)]..    
0540: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
0550: 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20 46 69  extern IntPtr Fi
0560: 6e 64 57 69 6e 64 6f 77 45 78 28 0d 0a 20 20 20  ndWindowEx(..   
0570: 20 20 20 20 20 49 6e 74 50 74 72 20 68 77 6e 64       IntPtr hwnd
0580: 50 61 72 65 6e 74 2c 0d 0a 20 20 20 20 20 20 20  Parent,..       
0590: 20 49 6e 74 50 74 72 20 68 77 6e 64 43 68 69 6c   IntPtr hwndChil
05a0: 64 41 66 74 65 72 2c 0d 0a 20 20 20 20 20 20 20  dAfter,..       
05b0: 20 53 74 72 69 6e 67 20 6c 70 73 7a 43 6c 61 73   String lpszClas
05c0: 73 2c 0d 0a 20 20 20 20 20 20 20 20 53 74 72 69  s,..        Stri
05d0: 6e 67 20 6c 70 73 7a 57 69 6e 64 6f 77 0d 0a 20  ng lpszWindow.. 
05e0: 20 20 20 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 20     );..    ..   
05f0: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 75 73 65   [DllImport("use
0600: 72 33 32 2e 64 6c 6c 22 29 5d 0d 0a 20 20 20 20  r32.dll")]..    
0610: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
0620: 65 78 74 65 72 6e 20 55 49 6e 74 33 32 20 47 65  extern UInt32 Ge
0630: 74 57 69 6e 64 6f 77 54 68 72 65 61 64 50 72 6f  tWindowThreadPro
0640: 63 65 73 73 49 64 28 0d 0a 20 20 20 20 20 20 20  cessId(..       
0650: 20 49 6e 74 50 74 72 20 68 57 6e 64 2c 0d 0a 20   IntPtr hWnd,.. 
0660: 20 20 20 20 20 20 20 6f 75 74 20 55 49 6e 74 33         out UInt3
0670: 32 20 6c 70 77 64 50 72 6f 63 65 73 73 49 64 0d  2 lpwdProcessId.
0680: 0a 20 20 20 20 29 3b 0d 0a 20 20 20 20 0d 0a 20  .    );..    .. 
0690: 20 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 75     [DllImport("u
06a0: 73 65 72 33 32 2e 64 6c 6c 22 29 5d 0d 0a 20 20  ser32.dll")]..  
06b0: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
06c0: 63 20 65 78 74 65 72 6e 20 49 6e 74 50 74 72 20  c extern IntPtr 
06d0: 53 65 6e 64 4d 65 73 73 61 67 65 28 0d 0a 20 20  SendMessage(..  
06e0: 20 20 20 20 20 20 49 6e 74 50 74 72 20 68 57 6e        IntPtr hWn
06f0: 64 2c 0d 0a 20 20 20 20 20 20 20 20 55 49 6e 74  d,..        UInt
0700: 33 32 20 4d 73 67 2c 0d 0a 20 20 20 20 20 20 20  32 Msg,..       
0710: 20 49 6e 74 50 74 72 20 77 50 61 72 61 6d 2c 0d   IntPtr wParam,.
0720: 0a 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20  .        IntPtr 
0730: 6c 50 61 72 61 6d 0d 0a 20 20 20 20 29 3b 0d 0a  lParam..    );..
0740: 20 20 20 20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d      ..    [DllIm
0750: 70 6f 72 74 28 22 75 73 65 72 33 32 2e 64 6c 6c  port("user32.dll
0760: 22 29 5d 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ")]..    interna
0770: 6c 20 73 74 61 74 69 63 20 65 78 74 65 72 6e 20  l static extern 
0780: 49 6e 74 50 74 72 20 53 65 74 46 6f 63 75 73 28  IntPtr SetFocus(
0790: 49 6e 74 50 74 72 20 68 57 6e 64 29 3b 0d 0a 20  IntPtr hWnd);.. 
07a0: 20 20 20 0d 0a 20 20 20 20 5b 44 6c 6c 49 6d 70     ..    [DllImp
07b0: 6f 72 74 28 22 75 73 65 72 33 32 2e 64 6c 6c 22  ort("user32.dll"
07c0: 29 5d 0d 0a 20 20 20 20 5b 72 65 74 75 72 6e 3a  )]..    [return:
07d0: 20 4d 61 72 73 68 61 6c 41 73 28 55 6e 6d 61 6e   MarshalAs(Unman
07e0: 61 67 65 64 54 79 70 65 2e 42 6f 6f 6c 29 5d 0d  agedType.Bool)].
07f0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
0800: 61 74 69 63 20 65 78 74 65 72 6e 20 42 6f 6f 6c  atic extern Bool
0810: 65 61 6e 20 53 65 74 46 6f 72 65 67 72 6f 75 6e  ean SetForegroun
0820: 64 57 69 6e 64 6f 77 28 49 6e 74 50 74 72 20 68  dWindow(IntPtr h
0830: 57 6e 64 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 20  Wnd);..    ..   
0840: 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 75 73 65   [DllImport("use
0850: 72 33 32 2e 64 6c 6c 22 29 5d 0d 0a 20 20 20 20  r32.dll")]..    
0860: 5b 72 65 74 75 72 6e 3a 20 4d 61 72 73 68 61 6c  [return: Marshal
0870: 41 73 28 55 6e 6d 61 6e 61 67 65 64 54 79 70 65  As(UnmanagedType
0880: 2e 42 6f 6f 6c 29 5d 0d 0a 20 20 20 20 69 6e 74  .Bool)]..    int
0890: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 65 78 74  ernal static ext
08a0: 65 72 6e 20 42 6f 6f 6c 65 61 6e 20 53 68 6f 77  ern Boolean Show
08b0: 57 69 6e 64 6f 77 28 0d 0a 20 20 20 20 20 20 20  Window(..       
08c0: 20 49 6e 74 50 74 72 20 68 57 6e 64 2c 0d 0a 20   IntPtr hWnd,.. 
08d0: 20 20 20 20 20 20 20 55 49 6e 74 33 32 20 6e 43         UInt32 nC
08e0: 6d 64 53 68 6f 77 0d 0a 20 20 20 20 29 3b 0d 0a  mdShow..    );..
08f0: 20 20 20 20 0d 0a 20 20 20 20 63 6f 6e 73 74 20      ..    const 
0900: 55 49 6e 74 33 32 20 53 57 5f 53 48 4f 57 20 20  UInt32 SW_SHOW  
0910: 20 20 20 3d 20 30 78 30 30 30 30 30 30 30 35 3b     = 0x00000005;
0920: 0d 0a 20 20 20 20 63 6f 6e 73 74 20 55 49 6e 74  ..    const UInt
0930: 33 32 20 53 59 4e 43 48 52 4f 4e 49 5a 45 20 3d  32 SYNCHRONIZE =
0940: 20 30 78 30 30 31 30 30 30 30 30 3b 0d 0a 20 20   0x00100000;..  
0950: 20 20 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73    ..    public s
0960: 74 61 74 69 63 20 76 6f 69 64 20 52 65 67 4a 75  tatic void RegJu
0970: 6d 70 28 53 74 72 69 6e 67 20 70 61 74 68 29 20  mp(String path) 
0980: 7b 0d 0a 20 20 20 20 20 20 49 6e 74 50 74 72 20  {..      IntPtr 
0990: 52 65 67 45 64 69 74 4d 61 69 6e 3b 0d 0a 20 20  RegEditMain;..  
09a0: 20 20 20 20 49 6e 74 50 74 72 20 52 65 67 45 64      IntPtr RegEd
09b0: 69 74 48 77 6e 64 3b 0d 0a 20 20 20 20 20 20 55  itHwnd;..      U
09c0: 49 6e 74 33 32 20 50 72 6f 63 65 73 73 49 64 20  Int32 ProcessId 
09d0: 3d 20 30 3b 0d 0a 20 20 20 20 20 20 49 6e 74 50  = 0;..      IntP
09e0: 74 72 20 68 6e 64 6c 3b 0d 0a 20 20 20 20 20 20  tr hndl;..      
09f0: 0d 0a 20 20 20 20 20 20 52 65 67 45 64 69 74 4d  ..      RegEditM
0a00: 61 69 6e 20 3d 20 46 69 6e 64 57 69 6e 64 6f 77  ain = FindWindow
0a10: 28 22 52 65 67 45 64 69 74 5f 52 65 67 45 64 69  ("RegEdit_RegEdi
0a20: 74 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20  t", null);..    
0a30: 20 20 69 66 20 28 52 65 67 45 64 69 74 4d 61 69    if (RegEditMai
0a40: 6e 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  n == IntPtr.Zero
0a50: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 50 72 6f  ) {..        Pro
0a60: 63 65 73 73 2e 53 74 61 72 74 28 22 72 65 67 65  cess.Start("rege
0a70: 64 69 74 2e 65 78 65 22 29 3b 0d 0a 20 20 20 20  dit.exe");..    
0a80: 20 20 20 20 54 68 72 65 61 64 2e 53 6c 65 65 70      Thread.Sleep
0a90: 28 31 30 30 29 3b 20 2f 2f 6d 61 6b 65 20 61 20  (100); //make a 
0aa0: 70 61 75 73 65 20 62 65 66 6f 72 65 20 6e 65 78  pause before nex
0ab0: 74 20 73 74 65 70 0d 0a 20 20 20 20 20 20 20 20  t step..        
0ac0: 52 65 67 45 64 69 74 4d 61 69 6e 20 3d 20 46 69  RegEditMain = Fi
0ad0: 6e 64 57 69 6e 64 6f 77 28 22 52 65 67 45 64 69  ndWindow("RegEdi
0ae0: 74 5f 52 65 67 45 64 69 74 22 2c 20 6e 75 6c 6c  t_RegEdit", null
0af0: 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  );..      }..   
0b00: 20 20 20 0d 0a 20 20 20 20 20 20 69 66 20 28 52     ..      if (R
0b10: 65 67 45 64 69 74 4d 61 69 6e 20 3d 3d 20 49 6e  egEditMain == In
0b20: 74 50 74 72 2e 5a 65 72 6f 29 20 7b 0d 0a 20 20  tPtr.Zero) {..  
0b30: 20 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 57 72        Console.Wr
0b40: 69 74 65 4c 69 6e 65 28 22 55 6e 61 62 6c 65 20  iteLine("Unable 
0b50: 74 6f 20 6c 61 75 6e 63 68 20 72 65 67 65 64 69  to launch regedi
0b60: 74 2e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 45  t.");..        E
0b70: 6e 76 69 72 6f 6e 6d 65 6e 74 2e 45 78 69 74 28  nvironment.Exit(
0b80: 31 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  1);..      }..  
0b90: 20 20 20 20 0d 0a 20 20 20 20 20 20 53 68 6f 77      ..      Show
0ba0: 57 69 6e 64 6f 77 28 52 65 67 45 64 69 74 4d 61  Window(RegEditMa
0bb0: 69 6e 2c 20 53 57 5f 53 48 4f 57 29 3b 0d 0a 20  in, SW_SHOW);.. 
0bc0: 20 20 20 20 20 52 65 67 45 64 69 74 48 77 6e 64       RegEditHwnd
0bd0: 20 3d 20 46 69 6e 64 57 69 6e 64 6f 77 45 78 28   = FindWindowEx(
0be0: 52 65 67 45 64 69 74 4d 61 69 6e 2c 20 49 6e 74  RegEditMain, Int
0bf0: 50 74 72 2e 5a 65 72 6f 2c 20 22 53 79 73 54 72  Ptr.Zero, "SysTr
0c00: 65 65 56 69 65 77 33 32 22 2c 20 6e 75 6c 6c 29  eeView32", null)
0c10: 3b 0d 0a 20 20 20 20 20 20 53 65 74 46 6f 63 75  ;..      SetFocu
0c20: 73 28 52 65 67 45 64 69 74 48 77 6e 64 29 3b 0d  s(RegEditHwnd);.
0c30: 0a 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 69  .      ..      i
0c40: 66 20 28 47 65 74 57 69 6e 64 6f 77 54 68 72 65  f (GetWindowThre
0c50: 61 64 50 72 6f 63 65 73 73 49 64 28 52 65 67 45  adProcessId(RegE
0c60: 64 69 74 48 77 6e 64 2c 20 6f 75 74 20 50 72 6f  ditHwnd, out Pro
0c70: 63 65 73 73 49 64 29 20 21 3d 20 30 29 20 7b 0d  cessId) != 0) {.
0c80: 0a 20 20 20 20 20 20 20 20 68 6e 64 6c 20 3d 20  .        hndl = 
0c90: 4f 70 65 6e 50 72 6f 63 65 73 73 28 53 59 4e 43  OpenProcess(SYNC
0ca0: 48 52 4f 4e 49 5a 45 2c 20 66 61 6c 73 65 2c 20  HRONIZE, false, 
0cb0: 50 72 6f 63 65 73 73 49 64 29 3b 0d 0a 20 20 20  ProcessId);..   
0cc0: 20 20 20 20 20 66 6f 72 20 28 49 6e 74 33 32 20       for (Int32 
0cd0: 69 20 3d 20 30 3b 20 69 20 3c 20 33 30 3b 20 69  i = 0; i < 30; i
0ce0: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 53  ++)..          S
0cf0: 65 6e 64 4d 65 73 73 61 67 65 28 52 65 67 45 64  endMessage(RegEd
0d00: 69 74 48 77 6e 64 2c 20 28 55 49 6e 74 33 32 29  itHwnd, (UInt32)
0d10: 30 78 31 30 30 2c 20 28 49 6e 74 50 74 72 29 30  0x100, (IntPtr)0
0d20: 78 32 35 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f  x25, IntPtr.Zero
0d30: 29 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 6a 75  );..        //ju
0d40: 6d 70 0d 0a 20 20 20 20 20 20 20 20 43 68 61 72  mp..        Char
0d50: 5b 5d 20 63 20 3d 20 70 61 74 68 2e 54 6f 43 68  [] c = path.ToCh
0d60: 61 72 41 72 72 61 79 28 29 3b 0d 0a 20 20 20 20  arArray();..    
0d70: 20 20 20 20 66 6f 72 20 28 49 6e 74 33 32 20 69      for (Int32 i
0d80: 20 3d 20 30 3b 20 69 20 3c 20 63 2e 4c 65 6e 67   = 0; i < c.Leng
0d90: 74 68 3b 20 69 2b 2b 29 20 7b 0d 0a 20 20 20 20  th; i++) {..    
0da0: 20 20 20 20 20 20 69 66 20 28 63 5b 69 5d 2e 45        if (c[i].E
0db0: 71 75 61 6c 73 28 27 5c 5c 27 29 29 0d 0a 20 20  quals('\\'))..  
0dc0: 20 20 20 20 20 20 20 20 20 20 53 65 6e 64 4d 65            SendMe
0dd0: 73 73 61 67 65 28 52 65 67 45 64 69 74 48 77 6e  ssage(RegEditHwn
0de0: 64 2c 20 28 55 49 6e 74 33 32 29 30 78 31 30 30  d, (UInt32)0x100
0df0: 2c 20 28 49 6e 74 50 74 72 29 30 78 32 37 2c 20  , (IntPtr)0x27, 
0e00: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a 20  IntPtr.Zero);.. 
0e10: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
0e20: 20 20 20 20 20 20 20 20 20 20 20 53 65 6e 64 4d             SendM
0e30: 65 73 73 61 67 65 28 52 65 67 45 64 69 74 48 77  essage(RegEditHw
0e40: 6e 64 2c 20 28 55 49 6e 74 33 32 29 30 78 31 30  nd, (UInt32)0x10
0e50: 32 2c 20 28 49 6e 74 50 74 72 29 63 5b 69 5d 2c  2, (IntPtr)c[i],
0e60: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
0e70: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
0e80: 20 20 20 53 65 74 46 6f 72 65 67 72 6f 75 6e 64     SetForeground
0e90: 57 69 6e 64 6f 77 28 52 65 67 45 64 69 74 4d 61  Window(RegEditMa
0ea0: 69 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 53 65  in);..        Se
0eb0: 74 46 6f 63 75 73 28 52 65 67 45 64 69 74 4d 61  tFocus(RegEditMa
0ec0: 69 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 43 6c  in);..        Cl
0ed0: 6f 73 65 48 61 6e 64 6c 65 28 68 6e 64 6c 29 3b  oseHandle(hndl);
0ee0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
0ef0: 0d 0a 27 40 20 2d 4e 61 6d 65 20 4a 75 6d 70 65  ..'@ -Name Jumpe
0f00: 72 20 2d 4e 61 6d 65 53 70 61 63 65 20 4e 61 74  r -NameSpace Nat
0f10: 69 76 65 4d 65 74 68 6f 64 73 20 2d 55 73 69 6e  iveMethods -Usin
0f20: 67 20 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f 73  g System.Diagnos
0f30: 74 69 63 73 2c 20 53 79 73 74 65 6d 2e 54 68 72  tics, System.Thr
0f40: 65 61 64 69 6e 67 20 2d 50 61 73 73 54 68 72 75  eading -PassThru
0f50: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 50 75 73  ....function Pus
0f60: 68 2d 50 61 74 68 20 7b 0d 0a 20 20 3c 23 0d 0a  h-Path {..  <#..
0f70: 20 20 20 20 2e 4e 4f 54 45 53 0d 0a 20 20 20 20      .NOTES..    
0f80: 20 20 20 20 41 75 74 68 6f 72 3a 20 67 72 65 67      Author: greg
0f90: 20 7a 61 6b 68 61 72 6f 76 0d 0a 20 20 23 3e 0d   zakharov..  #>.
0fa0: 0a 20 20 70 61 72 61 6d 28 0d 0a 20 20 20 20 5b  .  param(..    [
0fb0: 50 61 72 61 6d 65 74 65 72 28 4d 61 6e 64 61 74  Parameter(Mandat
0fc0: 6f 72 79 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20  ory=$true)]..   
0fd0: 20 5b 53 74 72 69 6e 67 5d 24 50 61 74 68 0d 0a   [String]$Path..
0fe0: 20 20 29 0d 0a 20 20 0d 0a 20 20 62 65 67 69 6e    )..  ..  begin
0ff0: 20 7b 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e   {..    function
1000: 20 54 65 73 74 2d 50 61 74 68 41 6e 64 4a 75 6d   Test-PathAndJum
1010: 70 28 5b 53 74 72 69 6e 67 5d 24 50 61 74 68 29  p([String]$Path)
1020: 20 7b 0d 0a 20 20 20 20 20 20 74 72 79 20 7b 0d   {..      try {.
1030: 0a 20 20 20 20 20 20 20 20 5b 76 6f 69 64 5d 5b  .        [void][
1040: 49 4f 2e 44 69 72 65 63 74 6f 72 79 5d 3a 3a 47  IO.Directory]::G
1050: 65 74 41 63 63 65 73 73 43 6f 6e 74 72 6f 6c 28  etAccessControl(
1060: 24 50 61 74 68 29 0d 0a 20 20 20 20 20 20 20 20  $Path)..        
1070: 5b 76 6f 69 64 5d 5b 44 69 61 67 6e 6f 73 74 69  [void][Diagnosti
1080: 63 73 2e 50 72 6f 63 65 73 73 5d 3a 3a 53 74 61  cs.Process]::Sta
1090: 72 74 28 27 65 78 70 6c 6f 72 65 72 2e 65 78 65  rt('explorer.exe
10a0: 27 2c 20 27 2f 6e 2c 20 27 20 2b 20 24 50 61 74  ', '/n, ' + $Pat
10b0: 68 29 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  h)..      }..   
10c0: 20 20 20 63 61 74 63 68 20 5b 4d 61 6e 61 67 65     catch [Manage
10d0: 6d 65 6e 74 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e  ment.Automation.
10e0: 4d 65 74 68 6f 64 49 6e 76 6f 63 61 74 69 6f 6e  MethodInvocation
10f0: 45 78 63 65 70 74 69 6f 6e 5d 20 7b 0d 0a 20 20  Exception] {..  
1100: 20 20 20 20 20 20 57 72 69 74 65 2d 48 6f 73 74        Write-Host
1110: 20 52 65 71 75 65 73 74 69 6e 67 20 70 61 74 68   Requesting path
1120: 20 61 63 63 65 73 73 20 69 73 20 6e 6f 74 20 61   access is not a
1130: 6c 6c 6f 77 65 64 2e 0d 0a 20 20 20 20 20 20 7d  llowed...      }
1140: 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 20 20  ..    }..  }..  
1150: 70 72 6f 63 65 73 73 20 7b 0d 0a 20 20 20 20 69  process {..    i
1160: 66 20 28 54 65 73 74 2d 50 61 74 68 20 24 50 61  f (Test-Path $Pa
1170: 74 68 29 20 7b 20 54 65 73 74 2d 50 61 74 68 41  th) { Test-PathA
1180: 6e 64 4a 75 6d 70 20 24 50 61 74 68 20 7d 0d 0a  ndJump $Path }..
1190: 20 20 20 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20      else {..    
11a0: 20 20 69 66 20 28 54 65 73 74 2d 50 61 74 68 20    if (Test-Path 
11b0: 28 24 6b 65 79 20 3d 20 27 52 65 67 69 73 74 72  ($key = 'Registr
11c0: 79 3a 3a 27 20 2b 20 24 50 61 74 68 2e 54 6f 55  y::' + $Path.ToU
11d0: 70 70 65 72 28 29 29 29 20 7b 0d 0a 20 20 20 20  pper())) {..    
11e0: 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20 20 20      try {..     
11f0: 20 20 20 20 20 24 6b 65 79 20 3d 20 27 5c 27 20       $key = '\' 
1200: 2b 20 28 67 69 20 2d 65 61 20 31 20 24 6b 65 79  + (gi -ea 1 $key
1210: 29 2e 4e 61 6d 65 20 2b 20 27 5c 27 0d 0a 20 20  ).Name + '\'..  
1220: 20 20 20 20 20 20 20 20 24 61 73 6d 3a 3a 52 65          $asm::Re
1230: 67 4a 75 6d 70 28 24 6b 65 79 29 0d 0a 20 20 20  gJump($key)..   
1240: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1250: 63 61 74 63 68 20 7b 20 24 5f 2e 45 78 63 65 70  catch { $_.Excep
1260: 74 69 6f 6e 2e 4d 65 73 73 61 67 65 20 7d 0d 0a  tion.Message }..
1270: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a        }..    }..
1280: 20 20 7d 0d 0a 20 20 65 6e 64 20 7b 27 27 7d 0d    }..  end {''}.
1290: 0a 7d 0d 0a 0d 0a 45 78 70 6f 72 74 2d 4d 6f 64  .}....Export-Mod
12a0: 75 6c 65 4d 65 6d 62 65 72 20 2d 41 6c 69 61 73  uleMember -Alias
12b0: 20 6a 75 6d 70 65 72 20 2d 46 75 6e 63 74 69 6f   jumper -Functio
12c0: 6e 20 50 75 73 68 2d 50 61 74 68 0d 0a           n Push-Path..