Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 权限可以提升管理员权限吗?_C++_Windows_Visual Studio 2010_Visual C++_Mfc - Fatal编程技术网

C++ 权限可以提升管理员权限吗?

C++ 权限可以提升管理员权限吗?,c++,windows,visual-studio-2010,visual-c++,mfc,C++,Windows,Visual Studio 2010,Visual C++,Mfc,windows下的程序需要管理员权限,启动时必须获得用户权限。他们也可以通过右键单击EXE并选择以管理员身份运行来以管理员权限运行。但是,在EXE启动之前,将显示一个消息框。真恶心 现在,我希望我的应用程序以管理员身份运行,并且我不希望在用户单击EXE文件时弹出消息框 现在我想知道AdjustTokenPrivileges函数是否可以帮助我实现这一点 有人能帮我吗?你把权利和特权搞混了。至少从Windows API的角度来看,这两个版本完全不同,尽管它们在很多时候被视为同义词,至少在处理Wind

windows下的程序需要管理员权限,启动时必须获得用户权限。他们也可以通过右键单击EXE并选择以管理员身份运行来以管理员权限运行。但是,在EXE启动之前,将显示一个消息框。真恶心

现在,我希望我的应用程序以管理员身份运行,并且我不希望在用户单击EXE文件时弹出消息框

现在我想知道AdjustTokenPrivileges函数是否可以帮助我实现这一点


有人能帮我吗?

你把权利和特权搞混了。至少从Windows API的角度来看,这两个版本完全不同,尽管它们在很多时候被视为同义词,至少在处理Windows上的操作时是如此

你真正想要的是提升权利的能力。如果系统的安全模型中没有一些缺陷,那么您就不能这样做。要获得管理权限,其目的是代码必须在管理帐户下运行—由最初以管理员身份登录的用户运行,或者由他们在运行时输入凭据运行,如您所见

特权实际上是特权所操纵的特权,是您有权做的事情,但在没有特别启用该特权的情况下仍然不允许做的事情。例如,假设您以管理员身份登录。这使您有权调整系统时钟-但调整系统时钟是正常程序几乎没有理由做的事情,因此在您可以这样做之前,他们添加了一个额外的步骤-您需要启用SE_SYSTEMTIME特权,然后才能使用该权利

如果您是以无权更改系统时间的帐户登录的,您根本无法更改系统时间。如果您登录到一个可以更改权限的帐户,则必须先启用该权限,然后才能执行此操作


一句话:AdjustTokenPrivileges无法完成您试图完成的任务。

实际上有一种方法,允许您通过调用LogonUser API函数来更改线程的安全凭据。它返回可在ImpersonalLoggedOnUser和CreateProcessAsUser调用中使用的令牌的句柄。这种技术称为模拟


但是,我认为您正在尝试实现一个不同的目标—在没有UAC用户通知的情况下运行具有提升管理权限的流程。您可以在msconfig实用程序中完全禁用UAC,这是一个非常糟糕的解决方案,或者让您的程序保持原样,因为坦率地说,当您的程序以超级用户权限运行时,用户有权知道,禁用此通知应该是他的决定。

您的用例是什么?换句话说,您的应用程序有什么特殊之处,即它需要以管理员身份运行,而无需获得用户的权限?