C 作为系统运行的直接、简单的api?

C 作为系统运行的直接、简单的api?,c,windows,C,Windows,假设一个程序已经以提升的权限运行,并且它需要查看System Volume Information文件夹的内容,默认情况下,只有NT Authority\System可以这样做。一个解决方法是更改文件夹上的ACL,但我不想弄乱它。我已经找到了两种方法:任务调度器和psexec。它们太间接了,我甚至不需要描述第一个,第二个是通过安装windows服务,运行它,告诉它运行我想运行的任何东西,然后卸载服务来实现的。现在的问题是:是否有一个直接、简单的WinAPI函数作为系统运行?我认为这样的API不会

假设一个程序已经以提升的权限运行,并且它需要查看System Volume Information文件夹的内容,默认情况下,只有NT Authority\System可以这样做。一个解决方法是更改文件夹上的ACL,但我不想弄乱它。我已经找到了两种方法:任务调度器和psexec。它们太间接了,我甚至不需要描述第一个,第二个是通过安装windows服务,运行它,告诉它运行我想运行的任何东西,然后卸载服务来实现的。现在的问题是:是否有一个直接、简单的WinAPI函数作为系统运行?我认为这样的API不会绕过安全限制,作为管理员,我有权安排任务或安装服务,因此必须有一个快捷方式


更新:如果有一个实际的API专门告诉我系统卷信息的内容,那么它将是完美的,不需要作为系统运行。

您不需要更改文件夹的ACL。相反,您可以更改流程的ACL。它是由一组模拟函数(例如ImpersonateLoggedOnUser)完成的。

ImpersonateLoggedOnUser需要LogonUser提供的令牌,该令牌需要密码。“我该怎么解决这个问题呢?”费耶斯乔科-不算数,没有奇迹。Windows安全系统不允许您在安全领域之外执行任何操作。没有专门的后门API来欺骗这一点。相反,考虑一些解决方法:()创建您管理并模拟的特殊帐户(例如IIS do it)。()创建从系统帐户启动的特殊windows服务,并为应用程序执行某些操作。(*)要求用户从特权帐户运行一些特色任务没有作弊,因为我是管理员,我可以安装服务并最终作为系统运行,我只是想知道是否有快捷方式。你知道,如果我能做点什么,为什么我需要技巧来实现它?无论如何,创建一个用户帐户听起来比创建一个服务要好得多,因为在我的本地进程中模拟一个用户要比生成一个服务并与之通信容易得多。如果我能创建一个拥有系统权限的用户,我会调查一下。偷代币确实有效,所以我接受它。德雷杰也提出了类似的建议,但你是第一个,所以我接受。另请参阅我的博客,了解我的发现:我想你正在寻找CreateProcessAsUsers如何从LogonUser获得需要密码的令牌?如果你的应用程序具有足够的权限,请尝试从任何系统进程获取令牌