Skip to content

Commit 94b4348

Browse files
authored
Allow set foreground from PS (microsoft#5541)
## Change Call `CoAllowSetForegroundWindow` from the PS module to prevent/reduce instances of the UAC prompt being launched but not foreground.
1 parent c981750 commit 94b4348

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/PowerShell/Microsoft.WinGet.Client.Engine/Helpers/ManagementDeploymentFactory.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,14 @@ public static ManagementDeploymentFactory Instance
103103
/// <returns>A <see cref="PackageManager" /> instance.</returns>
104104
public PackageManager CreatePackageManager()
105105
{
106-
return Create<PackageManager>(PackageManagerType, PackageManagerIid);
106+
var result = Create<PackageManager>(PackageManagerType, PackageManagerIid);
107+
108+
if (!Utilities.UsesInProcWinget)
109+
{
110+
_ = CoAllowSetForegroundWindow(result, IntPtr.Zero);
111+
}
112+
113+
return result;
107114
}
108115

109116
/// <summary>
@@ -222,5 +229,8 @@ private static T Create<T>(Type? type, in Guid iid)
222229
return (T)instance;
223230
#endif
224231
}
232+
233+
[DllImport("ole32.dll", ExactSpelling = true, PreserveSig = true)]
234+
private static extern int CoAllowSetForegroundWindow([MarshalAs(UnmanagedType.IUnknown)] object pUnk, IntPtr reserved);
225235
}
226236
}

0 commit comments

Comments
 (0)