-
Notifications
You must be signed in to change notification settings - Fork 0
/
register-notepad.ps1
47 lines (40 loc) · 1.54 KB
/
register-notepad.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<#
.SYNOPSIS
Script that adds "Notepad" as option in explorer "Open" contextual menu
.DESCRIPTION
Requires that Notepad is installed. Otherwise change the URL for $Notepad.
.NOTES
Problems and registry:
http://stackoverflow.com/questions/29267307/set-registry-key-to-open-notepad
Good Howto:
https://en.wikiversity.org/wiki/Windows_PowerShell/Registry
#>
# HKEY_CLASSES_ROOT is equal to HKLM:\Software\Classes
$registryPath = 'HKLM:\Software\Classes\*\Shell\Notepad\Command'
$Notepad = "C:\Windows\System32\notepad.exe `"%1`""
# Test for admin privs
function Test-Admin
{
$wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$prp = New-Object System.Security.Principal.WindowsPrincipal($wid)
$adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
$prp.IsInRole($adm)
}
$admincheck = Test-Admin
if ( $admincheck ){
if (!(Test-Path -LiteralPath $registryPath)) {
New-Item -Path $registryPath -Force |Out-Null
New-ItemProperty -LiteralPath $registryPath -Name "(default)" -value $Notepad -PropertyType string |OUT-Null
}
else {
Set-ItemProperty -LiteralPath $registryPath -Name "(default)" -value $Notepad -Force|OUT-Null
}
# Read the actual value
Write-Host "New value for " -NoNewLine
Write-Host -ForeGroundColor green "$registryPath.default is: " -Nonewline
$var = (Get-ItemProperty -LiteralPath $registryPath).'(default)'
Write-Host $var -ForeGroundColor DarkMagenta
}
else {
Write-Host -ForeGroundColor Red "You dont have administrative rights to change this!"
}