Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了以编程方式为Windows上的特定程序select性地禁用UAC大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

有关堆栈和其他论坛关于禁用/绕过/压制UAC的几十个post问题/答案。 也有解决scheR_11_11845@e。 但是可能不是。 我只能看到一个解决scheR_11_11845@e禁用UAC编程,但也许没有真正的程序化解决scheR_11_11845@e。

能不能有一个程序化的解决scheR_11_11845@e来保存用户每次运行一个像wamp这样的程序时都会被提示,而且他们总是需要点击yes,所以最好告诉windows他们的SELEct总是肯定的。 我相信会有

我发现在这里@H_944_6@ Windows通过GUI在Task scheduler中提供了这个function,所以它也必须通过代码来实现。

更新:我准备了一个正在工作的纯程序化解决scheR_11_11845@e。 看到我的答案。

从任务计划程序运行一个batch file不处理java命令

通过UFT的Amazon Web services实例运行UFTtesTing

任务计划程序应用程序退出触发器

Windows在哪里存储“计划任务”控制台的设置?

Windows XP批处理命令schtasks不'运行远程脚本

我在哪里可以findWindows任务计划程序退出代码列表?

Windows 2008 RC2不会启动计划任务

使用Schtasks调度具有参数的PHP脚本

Ruby win32ole – 如何传递VARIANT参数?

如何创build在任何用户login到系统时运行的计划任务

从此Codeplex链接下载Microsoft.Win32.Taskscheduler.dll

使交流#应用程序(Windows或控制台),并添加对上述DLL的引用

添加新项目(应用程序清单文件)到您的项目(此应用程序)

将<requestedExecutionLevel level="asInvoker" uiAccess="false" />更改为<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

你的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.YourDesiredschedulE); td.triggers.AddNew(TasktriggerType.logon); //td.Actions.Add(new ExecAction("Path Of your Application File",null)); td.Actions.Add(new ExecAction(@"c:wampwampmanager.exe",null)); ts.RootFolder.RegisterTaskDeFinition("anyNamefortask",td); } }

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

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

来源@H_944_6@

发起: 你可以关闭UAC的单个应用程序? 以及在Windows 7上针对特定程序选择性地禁用UAC

基本思想来自: 让Vista在启动时使用Task scheduler启动UAC受限程序@H_944_6@

创建计划任务的@H_944_6@基本实现

正确的方法不会忽略用户访问控制(UAC),而是在这些参数内进行测试。 这样你就不会破坏安全,而是在其范围内工作。

通过禁用安全措施,您将面临漏洞的风险。 据Secuna提供的几项安全测试已经注意到,小公司,懒惰的开发者应用程序,以及公然无视安全性的应用程序一直被关注。

这意味着您的应用程序在某个时候可能成为受害者。

我会采取的方法是在UAC内进行测试。 确保存在适当的权限来执行你的任务,这样它就不会随着权限的提高而不断地运行。 一个例子可能是:

class Elevated_Rights { // Token Bool: private bool _level = false; #region Constructor: protected Elevated_Rights() { // Invoke Method On Creation: Elevate(); } #endregion public void Elevate() { // Get Identity: WindowsIdentity user = WindowsIdentity.GetCurrent(); // Set Principal WindowsPrincipal role = new WindowsPrincipal(user); #region Test Operating System for UAC: if (Environment.oSVersion.Platform != PlatformID.Win32NT || Environment.oSVersion.Version.Major < 6) { // false: _level = false; } #endregion else { #region Test Identity Not Null: if (user == null) { // false: _level = false; } #endregion else { #region Ensure Security Role: if (!(role.IsInRole(WindowsBuilTinRole.Administrator))) { // false: _level = false; } else { // True: _level = true; } #endregion } } }

沿着这些线路可以让你测试UAC,然后执行任务。 我不太清楚你为什么要禁用UAC,但这是我的方法

希望有帮助。

如果要绕过以标准用户身份运行而获得的保护,则更好的解决方法是更改​​文件夹和注册表项的权限,以便允许所有用户修改应用程序的文件夹。

GrantAllUsersFullControlToFiLeorFolder("C:Program FilesGrobtastic");

代码执行:

void GrantAllUsersFullControlToFiLeorFolder(String path) { PACL oldDACL; PACL newDACL; PSecurity_DESCRIPTOR sd; //Get the current DALC (Discretionary Access Control List) and Security Descriptor getNamedSecurityInfo(path,SE_FILE_OBjeCT,DACL_Security_INFORMATION,nil,ref oldDACL,ref sd); //Create an SID for the "Users" group PSID useRSSid = StringToSid("S-1-5-32-545"); // Initialize an EXPLICIT_ACCESS structure for the new Access Control Entry (ACE) EXPLICIT_ACCESS ea; ZeroMemory(@ea,SizeOf(EXPLICIT_ACCESS)); ea.grfAccessPermissions = GENERIC_ALL; ea.grfAccessMode = GRANT_ACCESS; ea.grfInheritance = SUB_CONTAINERS_AND_OBjeCTS_INHERIT; ea.Trustee.TrusteeForm = TRUSTEE_IS_SID; ea.Trustee.TrusteeType = TRUSTEE_IS_GROUP; ea.Trustee.ptstrName = PChar(useRSSID); // Create a new ACL that merges the new ACE into the exisTing ACl. // SetEntriesInAcl takes care of adding the ACE in the correct order in the list SetEntriesInAcl(1,@ea,oldDACL,ref newDACL); //use LocalFree to free returned newDACL //Attach the new ACL as the object's new DACL SetNamedSecurityInfo(path,newDACL,nil); LocalFree(HLOCAL(sd)); LocalFree(HLOCAL(newDACL)); FreeSid(useRSSID); }

即使在UAC禁用的情况下(即用户是标准用户,并且没有提升的方便方法),这也是有效的。 它也适用于没有UAC便功能的Windows XP,而且您必须快速切换到管理员身份才能运行。

然后,您将可执行文件显示为以运行状态运行,因为您不需要管理权限。

问你自己:

我会在Windows XP上做什么?


在UAC禁用的情况下,我将在Windows 7上完成什么?

如果他们是一个标准的用户你的程序是否已经过时了?

大佬总结

以上是大佬教程为你收集整理的以编程方式为Windows上的特定程序select性地禁用UAC全部内容,希望文章能够帮你解决以编程方式为Windows上的特定程序select性地禁用UAC所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: