繁体   English   中英

如何在Windows 7上以提升的权限调用Win32 API

[英]How to call a Win32 API with elevated priviledges on Windows 7

我们刚刚发现,调用Win32 SetDateTime函数的代码需要在Windows 7中以提升模式运行,即,即使以管理员身份登录,仍然必须选择以“管理员”身份运行“设置日期”代码才能更改该调用。日期。

我有什么可以做的代码始终在提升的特权下调用此函数?

您可以使用ShellExecute API调用来启动具有提升特权的可执行文件。

但是,如果在计算机上启用了UAC(用户访问控制),则用户仍会收到UAC提示符,询问提升权限的运行。

因此,我认为您不能避免提示输入提升权限,但是至少您的用户不必以管理员身份手动运行该程序。

如果您需要有关如何以管理员身份启动可执行文件的帮助,请告诉我。

这不是安全性如何工作。 更改时钟是非常麻烦的操作,它有很多副作用。 Windows或任何其他操作系统都没有针对此问题的机制,您可以在其中以有限的特权启动进程,然后随意绕过这些限制并突然获得管理员权限。 如果可能的话,以有限的特权运行程序将毫无意义。

如果您想执行类似的操作,则必须以提升的权限运行程序。 在Vista和Win7上,要求您作为服务或计划任务运行。 这需要管理员进行安装。 UAC提供了一种获取常规程序管理员权限的方法,您必须在程序中包含清单,以便向用户通知您的特权提升。 Google'requireadministrator',首当其冲。

就像其他人所说的那样,您需要生成一个新进程来获得提升的权限,这将导致UAC对话框。

如果您需要在无人看管的情况下运行它,则可以尝试作为服务运行。 这将为您提供所需的高级环境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM