使用提升的权限调用自定义操作,但不作为 LocalSystem
Call Custom Action with elevated privileges but not as LocalSystem
我想从自定义操作创建计划任务。我需要更高的权限才能创建它。我正在使用 Task Scheduler Managed Wrapper.
using (TaskDefinition taskDefinition = TaskService.Instance.NewTask())
{
taskDefinition.RegistrationInfo.Date = DateTime.Now;
taskDefinition.RegistrationInfo.Description = "...";
taskDefinition.Principal.RunLevel = TaskRunLevel.Highest; // Scheduled Task with elevated privileges
DailyTrigger trigger = new DailyTrigger();
try
{
trigger.StartBoundary = new DateTime(DateTime.Today.Ticks)
.AddHours(20);
trigger.ExecutionTimeLimit = TimeSpan.FromSeconds(30);
trigger.DaysInterval = 2;
}
catch
{
trigger.Dispose();
throw;
}
taskDefinition.Triggers.Add(trigger);
taskDefinition.Actions.Add(Path.Combine(session.CustomActionData.Keys.Single(), "Updater.exe"));
TaskService.Instance.RootFolder.RegisterTaskDefinition(TaskName, taskDefinition);
}
根据 How to run custom executable with elevated privileges? 我必须使用
impersonate='no'
这可行,但是我想让调用 MSI 的用户成为计划任务的用户。但是上面的解决方案让 MSI 调用自定义操作作为 LocalSystem 然后用 LocalSystem 用户创建计划任务。
计划任务调用从 UNC 路径读取的 exe。所以 LocalSystem 不会在那里工作。
如何使用具有提升权限的 MSI 用户调用自定义操作?
要使用安装用户的凭据将自定义操作提升到 运行,您必须提升整个 MSI 进程启动,并在自定义操作中使用 impersomnate=yes。启动通常使用具有提升清单的启动程序完成,并使用 CreateProcess 启动启动 MSI,或者更好的是直接调用 MsiInstallProduct(或等效项)。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370315(v=vs.85).aspx
我想从自定义操作创建计划任务。我需要更高的权限才能创建它。我正在使用 Task Scheduler Managed Wrapper.
using (TaskDefinition taskDefinition = TaskService.Instance.NewTask())
{
taskDefinition.RegistrationInfo.Date = DateTime.Now;
taskDefinition.RegistrationInfo.Description = "...";
taskDefinition.Principal.RunLevel = TaskRunLevel.Highest; // Scheduled Task with elevated privileges
DailyTrigger trigger = new DailyTrigger();
try
{
trigger.StartBoundary = new DateTime(DateTime.Today.Ticks)
.AddHours(20);
trigger.ExecutionTimeLimit = TimeSpan.FromSeconds(30);
trigger.DaysInterval = 2;
}
catch
{
trigger.Dispose();
throw;
}
taskDefinition.Triggers.Add(trigger);
taskDefinition.Actions.Add(Path.Combine(session.CustomActionData.Keys.Single(), "Updater.exe"));
TaskService.Instance.RootFolder.RegisterTaskDefinition(TaskName, taskDefinition);
}
根据 How to run custom executable with elevated privileges? 我必须使用
impersonate='no'
这可行,但是我想让调用 MSI 的用户成为计划任务的用户。但是上面的解决方案让 MSI 调用自定义操作作为 LocalSystem 然后用 LocalSystem 用户创建计划任务。
计划任务调用从 UNC 路径读取的 exe。所以 LocalSystem 不会在那里工作。
如何使用具有提升权限的 MSI 用户调用自定义操作?
要使用安装用户的凭据将自定义操作提升到 运行,您必须提升整个 MSI 进程启动,并在自定义操作中使用 impersomnate=yes。启动通常使用具有提升清单的启动程序完成,并使用 CreateProcess 启动启动 MSI,或者更好的是直接调用 MsiInstallProduct(或等效项)。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370315(v=vs.85).aspx