我正在为我的公司开发一个需要管理权限(WMI调用、注册表访问等)的库存软件。为了方便起见,我不希望UAC提示用户执行应用程序的许可(是的,即使用户不希望,我也必须强制应用程序运行),我不能通过GPO禁用UAC(这将是完美的,但令人讨厌)。我首先尝试使用另一个进程(c#上的Processinfo)将AD管理帐户凭据传递给库存软件,但UAC提示仍然存在。经过一些研究,我发现如果使用本地管理员证书,它不会给我任何烦人的提示,但由于我公司的环境是一个混乱,有许多站点使用不同的证书,而不是标准化的。有人知道我要怎么做吗?(使用。net c#).
我已经使用Task Scheduler Managed Wrapper完成了这个任务。请确保在设置任务时提供了本地管理员组凭据。下面是我的代码:
using (TaskService ts = new TaskService())
{
try
{
//Create a new task definition and assign properties
TaskDefinition td = ts.NewTask();
td.Principal.RunLevel = TaskRunLevel.Highest;
td.RegistrationInfo.Description = "Paulos Task";
td.Triggers.Add(new TimeTrigger() { StartBoundary = Convert.ToDateTime("01-01-2003 00:00:01") });
// Create an action that will launch PauloApp whenever the trigger fires
td.Actions.Add(new ExecAction("PauloApp.exe", "", Environment.ExpandEnvironmentVariables(@"%ProgramFiles%Paulo")));
td.Settings.DisallowStartIfOnBatteries = false;
td.Settings.StopIfGoingOnBatteries = false;
ts.RootFolder.RegisterTaskDefinition("PaulosTask", td,
TaskCreation.CreateOrUpdate, "Administrators", null,
TaskLogonType.Group);
// Register the task in the root folder
Microsoft.Win32.TaskScheduler.Task t = ts.FindTask("PaulosTask");
if (t != null)
t.Run();
else
//could not find PaulosTask
}//end try
catch (Exception e)
{
}
}//end using