Articles of UAC

什么是导致桌面盾牌图标覆盖* SOME *桌面上

我有一个C ++ Builder / Delphi应用程序。 它具有以下清单作为资源embedded: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" processorArchitecture="*" version="1.0.0.0" name="Manufacturer.Division.MyName" /> <description>MyName</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" /> <!– Win Vista and Win Serv […]

“以pipe理员身份运行”和带有requireAdministrator的清单之间有什么区别?

我用一个包含requireAdministrator的清单编写了一个程序。 在启用了UAC的Windows 7系统上,Windows会popup一个询问权限的对话框,就像它应该那样。 很好用。 如果用户通过右键单击并select“以pipe理员身份运行”来启动我的程序,那么Windows 7也会popup一个询问权限的对话框。 但是,在我的程序的某些更深奥的部分中,我的程序是如何运行的,有一些细微的差别。 那么“以pipe理员身份运行”和带有requireAdministrator的清单之间有什么区别? 任何描述差异的文档的链接将不胜感激。 编辑 :这是与UAC启用。 编辑 :如下承诺是我看到的差异的完整解释。 我正在使用EasyHook库将DLL注入到另一个进程中。 当我的应用程序以“以pipe理员身份运行”运行时,注入的进程崩溃,EasyHook返回错误“注入的汇编代码中的未知错误”。 我的DLL中没有任何代码有机会执行; 在那之前崩溃发生。 (而且,即使我将DLL剥离为空也会发生崩溃) 如果我正常运行我的程序(即通过requireAdministrator提升),一切工作正常。 我的应用程序由几个不同的可执行文件组成。 用户启动的过程与执行注入的过程不同。

如果文件的名称包含“update”,Windows会强制UAC提升文件?

我正在使用Windows 7和Microsoft Visual Studio 2010。 我在WinMain()调用了一个MessageBox()调用的简单项目。 该项目的名称是"update" ,所以EXE文件的名称是update.exe 。 我在链接器设置中closures了清单生成。 但是当我尝试在Visual Studio中开始debugging时,它说我的应用程序需要提升。 我决定通过在Windows资源pipe理器中单击来启动应用程序,但仍然需要pipe理员权限。 我将其重命名为update12345.exe和12345update12345.exe ,但仍然需要提升。 但是当我将其重命名为12345.exe ,它完美工作,无需pipe理员权限! 我认为Windows需要提升所有名称包含"update"子string的文件。 所以,我从debugview.exe DebugView中取出另一个文件( debugview.exe ),并将其重命名为update.exe – 但是它没有提升。 什么可能是这个奇怪的行为的原因?

(C,windows)上的vista和UAC的CreateDesktop()

我在Vista中使用Vista UAC(C Windows)在CreateDesktop()中提出这个问题。我设置了一个赏金,但是在尝试拒绝唯一的答案时,错误地按下了“接受”(我已经醒了超过48小时)。 所以我再问一遍。 我正在使用CreateDesktop()创build一个应用程序将运行的临时桌面,执行清理操作(同时保持原状)并终止。 一旦应用程序消失,我正在closures桌面。 使用Windows XP甚至Vista时,一切都很好。 当启用(令人讨厌的)UAC时,问题就出现了。 当您创build桌面时,一切正常,但是当您调用CreateProcess()在该桌面上打开程序时,它会导致打开的应用程序崩溃,同时在User32.dll上发生exception。 我一直在阅读很多有关Windows上不同的桌面和图层以及内存的限制。 但是,我打开的大多数程序(作为testing场景)都可以,但是一些(如IE,记事本,Calc和我自己的应用程序)会导致崩溃。 任何人都有任何想法为什么这种情况发生在UAC的Vista上,或者更具体地说,这些特定的程序? 以及如何解决这个问题? 任何人都有一个很好的例子,如何创build一个桌面,并打开一个应用程序没有切换到Vista下与UAC? 代码表示赞赏。 谢谢 使用的代码是 SECURITY_ATTRIBUTES sa; HDESK dOld; HDESK dNew; BOOL switchdesk, switchdesk2, closedesk; int AppPid; sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; sa.nLength = sizeof(SECURITY_ATTRIBUTES); //Get handle to current desktop dOld = OpenDesktopA("default", 0, TRUE, DESKTOP_SWITCHDESKTOP| DESKTOP_WRITEOBJECTS| DESKTOP_READOBJECTS| DESKTOP_ENUMERATE| DESKTOP_CREATEWINDOW| DESKTOP_CREATEMENU); […]

testingpipe理运行权VB.NET的应用程序

我想要一个可靠的方法来testing应用程序是否通过UAC框运行,并具有完整的pipe理权限。 早些时候,我想在C:\ Windows \中创build一个文件夹进行testing,但是在其他计算机上运行却certificate是失败的! UAC框为计算机提供了所有的pipe理权限(包括在需要权限的地方创build文件夹和创build文件),并确保所调用或创build的子程序也具有与父代相同的权限。 有没有一种可靠的方法来testing我的应用程序是否已经提供了用户在运行应用程序时最大可能获得的所有pipe理权限? 如果是的话,我会很高兴有一块代码工作! 提前致谢

Windows如何决定是否显示UAC提示?

在我的VB6应用程序中,我打开其他EXE文件。 我的应用程序运行没有任何UAC提示,但我有一个EXE,检查软件的更新。 这会提示UAC提示。 那么Windows如何决定是否显示UAC提示? 我看到了这个链接 。 那么它取决于我在我的应用程序中编写的代码? 有趣的是,我的应用程序(这是主要的EXE文件)不提示UAC,而检查和下载更新的小EXE提示UAC。 我有所有的数字签名的EXE文件。 我已经浏览了以下链接: http://msdn.microsoft.com/en-us/library/windows/desktop/aa511445.aspx http://technet.microsoft.com/en-us/library/cc505883.aspx和其他一些。 但是我仍然不清楚。

UAC提示标高 – 它是如何工作的?

当需要执行某些安全相关操作时,Windows在“安全桌面”上显示UAC提示。 显然有一些API创build了安全桌面,并在其上创build了一个窗口,但我不知道在哪里可以find涉及的机制。 我想我可以对UAC机制进行逆向工程,但是我并不擅长逆向工程(我敢肯定,这涉及到一些法律方面的问题……) 无论如何,我知道有一个API可以在当前会话中创build新的桌面,但是在任何可以find的文档中都没有提到安全的桌面。 出于好奇,我想知道整个安全桌面/ UAC提示符创build如何工作。 免责声明:这纯粹是理论上的,我不打算在我的任何代码中进行部署。

诊断Windows应用程序清单

Windows应用程序清单有一个非常宽松的语法 – 无法识别的部分被忽略。 我如何诊断哪些部件被识别,哪些不是? 导致此问题的问题是具有指定了highestAvailable的requestedExecutionLevel的并行 UAC清单的应用程序。 这应该closuresVista文件虚拟化,但它不会。 我想找出原因。 正在使用清单,因为我通过故意引入语法错误来检查,但是我看不出如何使用它。

XAMPP错误解决scheme? 我已经安装在我的Windows XP双引导机器上

我的系统是双启动, Win-XP专业版(32位)Win-7(64位) 。 我的XP操作系统上安装了XAMPP( C:/ XAMPP )。 我想使用相同的htdocs目录来testing我的Windows上的PHP也。 但是,当我在同一个目录安装XAMPP,我得到这个错误。 重要! 因为系统上激活的用户帐户控制(UAC)可能会限制XAMPP的某些function。 使用UAC,请避免将XAMPP安装到C:\ Program Files(x86)(缺less写权限)。 或者在此设置之后使用msconfig取消激活UAC。 有人能帮助我解决这个问题吗? 谢谢。

启动新stream程时绕过海拔

好的,这是我的问题:我试图启动第三方应用程序。 这个应用程序显然被configuration为需要提升,大概是通过embedded式清单。 我的程序运行在非pipe理用户的上下文中,我希望第三方应用程序在相同的上下文中运行。 当我调用CreateProcess时,它将返回错误代码740,“请求的操作需要提升”。 我已经尝试了CREATE_PRESERVE_CODE_AUTHZ_LEVEL标志,这听起来相关,但它没有任何区别。 第三方应用程序没有pipe理员权限,例如,如果我禁用UAC,然后作为非pipe理员运行它。 提前感谢您的任何提示/想法。