通过Powershell打开和更改Windows设置

3

如果在SuperUsers中询问会更好,请告诉我。

我知道你可以通过以下方式在PowerShell中打开设置:

Start-Process ms-settings:

但我想在设置中特定的位置打开(在这种情况下,“设备 -> 笔和 Windows Ink”)

Start-Process "ms-settings:Devices\Pen & Windows Ink"

好的,显然这个方法可以用:P 我只是将它当作伪代码输入,但是显然它可以用。所以不要再考虑问题的前半部分了。

[编辑 昨天上面的代码可以用,但现在不行了。自从昨天以来,我已经对$profile文档进行了更改,但我看不出我做的任何事情会导致这个方法不再起作用]

如何切换“使用笔时忽略触摸输入”设置,例如以下伪代码最好不要起作用(否则那就太可怕了)

Toggle-Setting "ms-settings:Device\Pen & Windows Ink\Ignore touch when I'm using my pen"

(好的,这次不起作用)

如果您需要在注册表中执行某些操作,请说明如何避免弄乱重要的内容。


如果可以的話,我寧願不更改註冊表中的任何內容,因為這正是許多(如果不是大多數)設置更改所做的事情(更改註冊表中的某些內容)。 - Bill_Stewart
好的,我正是这么想的。在这种情况下,如果有关于如何确保我不会完全搞砸任何东西的任何指导,我将不胜感激,因为每次有东西在线上要求我更改注册表时,都会建议备份整个系统以防万一。 - ElliotThomas
1个回答

0

嗯,注册表是你在这里的最佳选择。除此之外,你也可以通过向打开的窗口发送消息来实现,但那将是一个冗长(且易破坏)的方法。

要执行你想要的特定操作,请使用以下代码:

$registryPath = "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows\Pen"
$GetValue = {Get-ItemPropertyValue -Path $registryPath -Name 'PenArbitrationType'}

Write-Host "Initial value is $($GetValue.Invoke())" -ForegroundColor Cyan
# on
Set-ItemProperty -Path $registryPath -Name 'PenArbitrationType' -Value 1
Write-Host "Item property is now set to: $($GetValue.Invoke()) "
# off 
Set-ItemProperty -Path $registryPath -Name 'PenArbitrationType' -Value 3
Write-Host "Item property is now set to: $($GetValue.Invoke()) "

如果您打开regedit,进入上述路径,然后使用UI手动更改值,您就可以看到它的效果。如果您刷新regedit,您会发现该值在1(开)和3(关)之间交替。

当您切换该设置时,这基本上是UI为您完成的所有操作。

参考: 在Windows 10中使用笔时打开或关闭忽略触摸输入


当我打开它时,键入该属性的 Get-ItemProperty 命令会显示它已经打开,但是当我使用笔或在设置中进行测试时,没有任何变化。当我在设置中更改选项时,Get-ItemProperty 将给出正确的值,但是当我在 PowerShell 中更改选项时,只有 Get-ItemProperty 发生了变化,而不是在设置中的复选框(即使重新启动应用程序后),并且使用笔进行测试也显示它仍然是打开或关闭状态(无论在设置中设置为何值)。 - ElliotThomas
@Theo,我需要注销什么?我该怎么做? - ElliotThomas
@ElliotThomas 嗯嗯嗯嗯嗯嗯,就像这个 - Theo
@Theo 哈哈,我以为就是这样,但我不确定你是否在谈论其他事情。有没有一种方法可以在不必签入和签出的情况下完成这个操作? - ElliotThomas
@ElliotThomas 当你通过Powershell进行操作时,是否打开了设置窗口?如果是这样,请尝试在不同时打开设置窗口的情况下使用Powershell。不幸的是,我没有这个选项来进一步测试自己,这可能是由于我的笔的缺乏。 - Sage Pourpre
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接