Vic*_*tor 4 c# powershell startup uwp
我希望enable/disable通过powershell来到uwp app的启动项,但是我尝试使用gcim win32_startupcommand,Get-Item HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\Run并不能找到\xe2\x80\x99,shell:startup也是空的,看来uwp app是不可见的,只能在Task中看到Manager->Startup,那我该怎么办呢?
我尝试使用Regshot对比启用启动项前后的差异,如下:
\n\n另外,我发现这些注册表项在UWP或任务管理器启动之前并不存在,所以最终我认为这可能是一个非常复杂的解决方案,我放弃了这样做。
\n小智 7
在实现对[Windows.ApplicationModel.StartupTask]::RequestEnableSync()和::Disable()方法的本机调用之前,这是一个潜在的解决方法...
在此示例中,我将切换 Skype 桌面扩展启动任务的状态:
$app = (Get-AppxPackage | Where-Object -Property Name -EQ -Value Microsoft.SkypeApp)
$pkgName = $app.PackageFamilyName
$startupTask = ($app | Get-AppxPackageManifest).Package.Applications.Application.Extensions.Extension | Where-Object -Property Category -Eq -Value windows.startupTask
$taskId = $startupTask.StartupTask.TaskId
$state = (Get-ItemProperty -Path "HKCU:Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\SystemAppData\$pkgName\$taskId" -Name State).State
$regKey = "HKCU:Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\SystemAppData\$pkgName\$taskId"
if ($state -in 0,1,3) {
Set-ItemProperty -Path $regKey -Name UserEnabledStartupOnce -Value 1
Set-ItemProperty -Path $regKey -Name State -Value 2
} else {
$lastDisabled = [int](New-TimeSpan -Start (Get-Date '1970-01-01 00:00:00 GMT') -End (Get-Date)).TotalSeconds
Set-ItemProperty -Path $regKey -Name LastDisabledTime -Value $lastDisabled
Set-ItemProperty -Path $regKey -Name State -Value 1
}
Run Code Online (Sandbox Code Playgroud)
有关可能的状态值的详细信息,请参阅:https://learn.microsoft.com/en-us/uwp/api/windows.applicationmodel.startuptaskstate ?view=winrt-19041
有关如何将这些任务内置到 UWP 应用程序中的示例,请参阅:https ://windowsadmins.com/configure-your-app-to-start-at-log-in/
享受。