我有一个不寻常的情况,需要SharePoint计时作业既具有本地管理员Windows权限,又具有SHAREPOINT \ System SharePoint权限。
我可以通过将计时服务配置为使用属于本地管理员的帐户来获得Windows权限。我理解这不是一个好的解决方案,因为它给予SharePoint计时服务比它应该拥有的更多的权利。但至少它允许我的SharePoint计时作业运行stsadm。
在以本地管理员身份运行计时服务时的另一个问题是,此用户不一定具有我还需要的SHAREPOINT \ System SharePoint权限。事实证明,在这种情况下,SPSecurity.RunWithElevatedPrivileges无法工作。反射器显示RunWithElevatedPrivileges检查当前进程是否为owstimer(运行SharePoint作业的服务进程),并且如果是,则不执行升级(这里的合理性是计时器服务应该在NT AUTHORITY \ NetworkService Windows帐户下运行,该帐户具有SHAREPOINT \ System SharePoint权限,因此不需要为计时作业提升特权)。
这里唯一可能的解决方案似乎是在其通常的NetworkService Windows帐户下运行计时服务,并通过将管理员凭据存储在某个地方并通过StarInfo的用户名、域和密码传递给System.Diagnostics.Process.Run()来以本地管理员身份运行stsadm。
现在似乎一切都应该正常工作,但是我现在遇到的另一个问题是卡住了。在这种情况下,Stsamd失败,并显示以下错误弹出窗口(!)(Winternals filemon显示stsadm在此情况下正在管理员下运行):
“应用程序无法正确初始化(0x0c0000142)。” “单击确定以终止应用程序。”
事件查看器什么也没有注册,除了弹出窗口。
本地管理员用户是我的帐户,当我只是以此帐户交互式运行stsadm时,一切正常。当我将计时服务配置为在此帐户下运行时,它也可以正常工作。
欢迎提出任何建议 :)
我可以通过将计时服务配置为使用属于本地管理员的帐户来获得Windows权限。我理解这不是一个好的解决方案,因为它给予SharePoint计时服务比它应该拥有的更多的权利。但至少它允许我的SharePoint计时作业运行stsadm。
在以本地管理员身份运行计时服务时的另一个问题是,此用户不一定具有我还需要的SHAREPOINT \ System SharePoint权限。事实证明,在这种情况下,SPSecurity.RunWithElevatedPrivileges无法工作。反射器显示RunWithElevatedPrivileges检查当前进程是否为owstimer(运行SharePoint作业的服务进程),并且如果是,则不执行升级(这里的合理性是计时器服务应该在NT AUTHORITY \ NetworkService Windows帐户下运行,该帐户具有SHAREPOINT \ System SharePoint权限,因此不需要为计时作业提升特权)。
这里唯一可能的解决方案似乎是在其通常的NetworkService Windows帐户下运行计时服务,并通过将管理员凭据存储在某个地方并通过StarInfo的用户名、域和密码传递给System.Diagnostics.Process.Run()来以本地管理员身份运行stsadm。
现在似乎一切都应该正常工作,但是我现在遇到的另一个问题是卡住了。在这种情况下,Stsamd失败,并显示以下错误弹出窗口(!)(Winternals filemon显示stsadm在此情况下正在管理员下运行):
“应用程序无法正确初始化(0x0c0000142)。” “单击确定以终止应用程序。”
事件查看器什么也没有注册,除了弹出窗口。
本地管理员用户是我的帐户,当我只是以此帐户交互式运行stsadm时,一切正常。当我将计时服务配置为在此帐户下运行时,它也可以正常工作。
欢迎提出任何建议 :)