Windows下的程序需要管理员权限时,他们开始必须把用户的权限。 他们可以用管理员权限,通过右键单击EXE,然后选择“以管理员身份运行”也跑。 但是,该EXE开始前,一个消息框会显示出来。 这真的很恶心。
现在,我想我的应用程序作为管理员身份运行,我不希望在弹出消息框,当用户单击该EXE文件。
现在我不知道该AdjustTokenPrivileges功能是否可以帮助我实现这一目标。
任何一个能帮助我吗?
Windows下的程序需要管理员权限时,他们开始必须把用户的权限。 他们可以用管理员权限,通过右键单击EXE,然后选择“以管理员身份运行”也跑。 但是,该EXE开始前,一个消息框会显示出来。 这真的很恶心。
现在,我想我的应用程序作为管理员身份运行,我不希望在弹出消息框,当用户单击该EXE文件。
现在我不知道该AdjustTokenPrivileges功能是否可以帮助我实现这一目标。
任何一个能帮助我吗?
你感到困惑的权利和特权之间。 在从Windows API的观点至少,两者是完全不同的(虽然他们,否则如时间的代名词了大量治疗,至少在“您可以在Windows上做什么”问题时)。
你真正寻找的是提升权限的能力。 短的系统的安全模型的一些缺陷,你不应该是能够做到这一点。 要获取管理权限,目的是使代码应该有下一个管理帐户运行 - 无论是用户最初登录为管理员,或者通过它们进入在运行时的凭据如您所见。
特权(这是什么AdjustTokenPrivileges
实际操纵)一些事情是你必须做的权利 ,但仍然不允许没有明确允许这种特权做。 例如,假设你开始登录为管理员。 这让你调整系统时钟正确的-但调整系统时钟是正常的东西节目几乎从来没有一个理由这样做,所以他们增加了一个额外的步骤,你可以做到这一点之前-你需要启用SE_SYSTEMTIME
特权之前,你可以利用这一权利。
如果你不具备更改系统时间的权限的帐户下登录,你根本无法做到这一点。 如果你登录到可以改变它的帐户,您必须首先启用权限,然后才能做到这一点。
底线: AdjustTokenPrivileges
不会完成你想要做什么。
其实还有一种方法,它允许你通过调用更改线程安全证书LogonUser
API函数。 它返回的句柄可能在使用的令牌ImpersonateLoggedOnUser
和CreateProcessAsUser
调用。 这种技术被称为非人格化。
Howewer,我想你想实现不同的事情 - 运行与没有UAC通知用户提升管理权限的过程。 您既可以完全在MSCONFIG实用,这是一个非常糟糕的解决方案禁用UAC,或留下你的程序,因为它是,因为坦率地说,用户有权利知道,当你的程序与超级用户权限运行,并且禁用此通知应该是他的决定。