1
votes

I have a short Powershell-script that is supposed to set a value in the following registry-path:

Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility"  -Name "Configuration" -Value "osk"

My problem is, that the script works, but when it is run from a 32-Bit environment (actually we use a 32-Bit custom application that calls the scripts automatically), the call gets redirected to

HKEY_LOCAL_MACHINE\SOFTWARE\ WOW6432Node\Microsoft\Windows NT\CurrentVersion\Accessibility

And the item is set there, therefor it is not working as it is supposed to.

How can I reach the correct registry path HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility on both 32- and 64-Bit Windows 10 systems, no matter if the script is run from a 32- or 64-Bit commandshell?

2

2 Answers

1
votes

It seems you could just test the system for 64-bit compatibility, and then provide the proper parameter values accordingly:

if ([Environment]::Is64BitOperatingSystem) {
    Set-ItemProperty "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Accessibility"  -Name "Configuration" -Value "osk"
}
else {
    Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility"  -Name "Configuration" -Value "osk"
}
0
votes

Are you using Kace, which has only a 32-bit client? :/ You can run the 64-bit powershell like this from it:

C:\WINDOWS\Sysnative\WindowsPowerShell\v1.0\powershell.exe