草庐IT

windows - 如何将 UAC 盾牌图标添加到标准消息框?

我想通知用户我的应用程序想要使用标准MessageBox启动提升的进程。有没有办法在不重新实现MessageBox的情况下实现这一目标?例如,对于标准按钮,您可以发送BCM_SETSHIELD消息。消息框有类似的东西吗? 最佳答案 为了让盾牌图标出现在系统提供的消息对话框的按钮上,您需要处理来自对话框的回调。例如,我将用TaskDialogIndirect()来说明Vista中引入的API。基本对话框允许您指定主图标,但不能指定对话框按钮的盾牌图标。为此,您需要提供callbackfunction响应TDN_CREATED通知。该回

windows - 进程启动后能否提升自身?

进程启动后是否有可能获得管理员权限?如果是,怎么办?示例应使用C或C++。编辑-示例还应使用非托管代码。 最佳答案 当进程正在运行时,您不能提升进程的权限。解决这个问题的常见方法是在需要时生成一个具有提升权限的新进程。然后该进程执行需要更高权限的工作,然后退出,将控制权交还给主进程。您应该能够通过将新进程父窗口设置为主进程窗口的父窗口来使其相当无缝。另一种选择是使用所需权限重新启动主程序。有一个articleonUACinVistawithC++examples这看起来很深入。 关于wi

windows - 当应用程序需要管理员权限时,Windows 7 会弹出消息吗?

当我编写需要执行“可管理”操作的应用程序时会发生什么?就像将文件写入C:\ProgramFiles-然后,当应用程序尝试这样做时,会发生什么?是否会弹出一条消息要求用户输入密码?会抛出异常吗?程序会不会终止,电脑会不会爆炸?上述所有的?:)旁注:Windows7用户是否默认以管理员身份登录? 最佳答案 一般来说,WindowsVista和Windows7不会自动检测到您需要管理员权限,也不会自动提升您的应用程序。Microsofthassomeguidelines正确请求提升。没有list的旧应用程序可能会发现自己也已虚拟化-也就是

python - 使用 PyInstaller onefile 选项和 list 将 UAC 设置为 requireAdministrator

好吧,我一直在四处寻找,试图找出这个问题。我正在构建一个名为GraphicScriptWizard.exe的应用程序使用PyInstaller2.0版,使用-i-F-w和-m选项。我定义为与-m选项一起使用的list文件称为GraphicScriptWizard.exe.manifest并具有以下内容:使用此list和命令行选项,我没有得到提示提升的可执行文件。为了完整起见,Pyinstaller生成的规范文件是:#-*-mode:python-*-a=Analysis(['GraphicScriptWizard.py'],pathex=[],hiddenimports=[],hook

python - 我可以阻止可执行文件请求 UAC 提升吗?

我有一个安装程序,我想从脚本运行。安装程序请求UAC提升,但它不需要提升,因为我正在安装到用户目录。有没有什么方法可以运行安装程序,使其不请求UAC提升?脚本是用Python编写的,因此我可以通过ctypes访问WindowsAPI。更改安装程序不是一个选项。 最佳答案 您必须将进程的环境变量__compat_layer设置为RunAsInvoker。然后您可以在没有任何UAC提示的情况下运行可执行文件。您可以使用WindowsAPI函数SetEnvironmentVariable为此目的。

.net - 如何在 .NET 应用程序中为选定操作正确实现 "As Administrator"或 "Run As Administrator"?

我正在寻找允许提升选定操作权限的正确方法。许多产品都提供类似的东西。例如,如果您打开了UAC,并且在浏览受限文件夹时使用TotalCommander(以基本权限运行),您将获得:如果您按AsAdministrator,您将看到常见的用户访问控制对话框,询问您是否要授予进程所需的权限。在.NET应用程序中是否有类似的可能(即使有Win32支持)?应如何正确实现此类功能?我是否需要运行外部进程来为选定的功能获取更高的权限?我不是在寻找需要以管理员身份运行主进程的解决方案。 最佳答案 您将不得不将目标操作功能考虑到一个单独的组件中,该组件

windows - Vista UAC - 无法映射网络驱动器

我们有一个以编程方式映射网络驱动器的应用程序。在启用了UAC的Vista上,我们遇到了一些奇怪的问题。我们的应用程序映射驱动器未提升,因此如果用户浏览资源管理器并双击运行exe,它会提示UAC。因此,当他们批准它时,它会提示输入共享的用户名/密码......奇怪,因为凭证已保存。事实证明,提升的进程无法访问从非提升的进程映射的映射驱动器。要实际查看此问题,请执行以下步骤:在没有UAC的情况下运行cmd.exe运行“netusew:\yourHostname\yourShare/user:yourUseryourPassword/persistent:yes”以管理员身份运行cmd.ex

windows - UAC 和提升提示模式

我已经阅读了几个关于UAC和特权提升的问题,但没有找到令人满意/全面的答案。我有这种情况:在Windows6或更高版本上,当用户打开配置窗口时,我必须在确定按钮上显示盾牌(BCM_SETSHIELD)仅如果完成任务需要权限提升。--我确实知道在WindowsUI中,屏蔽始终可视化用于“管理任务”,即使禁用了UAC,但客户有此特定要求。为了显示图标,我起草了这个条件:用户没有管理权限或当前进程有TOKEN_ELEVATION_TYPE==TokenElevationTypeLimited条件#1很简单:如果用户没有管理权限,则无论UAC是什么,都始终需要提升权限。#2表示用户具有管理权限

windows - 我可以确定 Matlab 是否在 Windows 中以提升的权限运行吗?

我想检测当前的Matlabsession是否在Windows下以提升的权限运行(即用户以“以管理员身份运行”启动它)。理想情况下,该解决方案适用于XP和Windows7,但如果需要,我很乐意提供两种解决方案。This答案表明我可以通过.Net外部接口(interface)从Matlab获取我需要的信息(至少对于Vista和更高版本),但我想知道是否有更“本地”的Matlab解决方案。 最佳答案 “Matlab.NETBridge”用于另一种方式-从.NET调用Matlab。使用.NET外部接口(interface)支持可以非常直接地

.net - 如何在显示 UAC 对话框窗口时运行我的应用程序?

我有一个用.NET编写的应用程序。它需要保持运行并访问UAC对话窗口打开的桌面,并使用键盘和鼠标事件与该桌面交互。它有点像VNC程序。想象一下,您正在运行一个VNC程序并弹出一个UAC窗口,您希望您的VNC程序仍然能够控制带有UAC窗口的桌面,以便用户可以移动鼠标并单击UAC对话框上的确定按钮。谁能告诉我该怎么做?谢谢 最佳答案 我建议您先阅读documentation.我想也许你可以打开窗口站并将你的进程附加到它,但我对Windows的这个领域不是很熟悉。编辑1:在WindowsXP中,当以SYSTEM身份运行时,我能够通过Ope