SPSecurity.RunWithElevatedPrivileges是否可以在控制台应用程序中执行任何操作?

时间:2020-03-06 14:36:13  来源:igfitidea点击:

根据我从反射器收集的信息,RunWithElevatedPriveleges只是将当前线程标识还原为基本(非模拟)标识。在WSS应用程序池中运行代码的情况下,这非常有意义,因为基本服务帐户是超级用户。在没有模拟的外部(控制台或者服务)应用程序中运行时,它会产生任何影响吗?我猜不是,但是我想确定。从谷歌搜索中,我已经看到了各种各样的意见。

解决方案

我认为,如果我们在一个帐户下运行可执行文件,然后使用代码更改其凭据(就像SP一样),便会如此。否则,如果没有某种生成凭证对象的方法,它将无法提升到开始时没有的权限。

通常,Runwithelevatedprivileges将使代码作为应用程序池标识运行,但不适用于控制台。在这种情况下,我们要做的是使用runas或者
将计划任务的标识设置为与应用程序池标识相同的帐户。