我们刚刚发现调用 Win32SetDateTime
函数的代码需要在 Windows 7 中以提升模式运行,即即使以管理员身份登录,仍然必须选择以管理员身份运行 Set Date 代码才能调用更改日期.
我可以在代码中做些什么来始终在提升的权限下调用此函数吗?
我们刚刚发现调用 Win32SetDateTime
函数的代码需要在 Windows 7 中以提升模式运行,即即使以管理员身份登录,仍然必须选择以管理员身份运行 Set Date 代码才能调用更改日期.
我可以在代码中做些什么来始终在提升的权限下调用此函数吗?
您可以使用 ShellExecute API 调用来启动具有提升权限的可执行文件。
但是,如果在计算机上启用了 UAC(用户访问控制),用户仍然会收到 UAC 提示,要求您提供运行提升的权限。
所以我认为你不能避免提示提升权限,但至少你的用户不必以管理员身份手动运行程序。
如果您在如何以管理员身份启动可执行文件方面需要帮助,请告诉我。
这不是安全工作的方式。更改时钟是一项非常侵入性的操作,它具有非常多的副作用。Windows 或任何其他操作系统中没有任何机制可以让您以有限的权限启动进程,然后随意绕过这些限制并突然获得管理员权限。如果可能的话,以有限的权限运行程序没有任何意义。
如果您想做这样的事情,那么您必须以提升的权限运行您的程序。在要求您作为服务或计划任务运行的 Vista 和 Win7 上。这需要管理员安装。UAC 为常规程序提供了一种获得管理员权限的方法,您必须在程序中包含一个清单,以便通知用户您的权限提升。谷歌'requireadministrator',抢占先机。
正如其他人所说,您需要生成一个新进程来获得提升的权限,这将导致 UAC 对话框。
如果这是您需要在无人值守的情况下运行的东西,您可以尝试作为服务运行。这将为您提供所需的提升上下文。