c# - 以编程方式有选择地禁用 Windows 上特定程序的 UAC

标签 c# windows scheduled-tasks uac

在堆栈和其他论坛上有许多关于禁用/绕过/抑制 UAC 的帖子问题/答案。也有解决方案。但在程序上也许不是。我只能看到一个解决方案 Disabling UAC programmatically但也许那里没有给出真正的程序化解决方案。

是否可以有一个程序化的解决方案来保存用户每次他/她运行像 wamp 这样的程序时都会被提示并且他们总是必须单击"is",所以最好告诉 Windows 他们的选择总是"is"。我相信会有这样的

我找到了 Here Windows 通过 GUI 在 Task Scheduler 中提供此功能,因此它也必须通过代码实现。

更新:我准备了一个可以正常工作的纯程序化解决方案。看我的回答。

最佳答案

简要说明:创建一个新的控制台/窗口应用程序以绕过 UAC 运行任何应用程序,按照下面的指导在该应用程序中选择目标应用程序的路径,编译该程序一次,并随时运行

一步一步

  1. This Codeplex link 下载 Microsoft.Win32.TaskScheduler.dll
  2. 创建一个 c# 应用程序(Windows 或控制台)并添加对上述 dll 的引用
  3. 将新项目(应用程序 list 文件)添加到您的项目(此应用程序)
  4. 更改 <requestedExecutionLevel level="asInvoker" uiAccess="false" /><requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  5. 在您的 program.cs 文件中编写以下代码

using System;
using Microsoft.Win32.TaskScheduler;
class Program
{
   static void Main(string[] args)
   {
      TaskService ts = new TaskService();          
      TaskDefinition td = ts.NewTask();
      td.Principal.RunLevel = TaskRunLevel.Highest;
      //td.Triggers.AddNew(TaskTriggerType.Logon);          
      td.Triggers.AddNew(TaskTriggerType.Once);    // 
      string program_path = @"c:\wamp\wampmanager.exe"; // you can have it dynamic
//even of user choice giving an interface in win-form or wpf application

      td.Actions.Add(new ExecAction(program_path, null));
      ts.RootFolder.RegisterTaskDefinition("anyNamefortask", td);          
   }
}

6.现在编译并运行你的应用程序(这个应用程序)


现在您的应用程序(例如 WAMP)将在您想要的时间表上运行而不会提示任何 UAC 对话框(在我的情况下每次您登录窗口时)

来源

发起于:Can you turn off UAC for a single app?Selectively disabling UAC for specific programs on Windows 7

基本想法来自:Make Vista launch UAC restricted programs at startup with Task Scheduler

的基本实现 Creating Scheduled Tasks

关于c# - 以编程方式有选择地禁用 Windows 上特定程序的 UAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191129/

相关文章:

c - gdb 调试 - 仅在 stdin 内\n

c# - 在没有管理员权限的情况下使用 'schtasks' 调度任务 C#

asp.net - Azure 中的后台任务

c# - 从内部派生的公共(public)接口(interface)?

javascript - 从客户端更改服务器端 div 的内容

php - 我可以在 PHP 中获取客户端用户名吗?

java - 如何获取当前正在运行的线程

c# - MVC 在 View 中显示文件夹中的文件

c# - Microsoft.WindowsCE.Forms 的奇怪行为

windows - 什么是 Windows Fabric 以及如何在其中托管服务?