C# 为什么VBScript服务仅在用户登录时才起作用?

C# 为什么VBScript服务仅在用户登录时才起作用?,c#,vbscript,C#,Vbscript,我们从Web服务执行脚本,该服务在VBScript中执行一些操作。此脚本从命令行运行,没有错误。当我们从带有ProcessStartInfo的服务运行此脚本时,它不会在运行进程的用户未登录时执行。我们收到以下错误:CScript错误:加载设置失败。(访问被拒绝。)但是,当执行该服务的用户通过远程桌面登录时,该服务正在成功运行。什么会导致这种情况?我们如何解决这种情况?当您收到“访问被拒绝”消息时,VBScript运行的用户身份是什么?我敢打赌是NT AUTHORITY\networkservic

我们从Web服务执行脚本,该服务在VBScript中执行一些操作。此脚本从命令行运行,没有错误。当我们从带有ProcessStartInfo的服务运行此脚本时,它不会在运行进程的用户未登录时执行。我们收到以下错误:CScript错误:加载设置失败。(访问被拒绝。)但是,当执行该服务的用户通过远程桌面登录时,该服务正在成功运行。什么会导致这种情况?我们如何解决这种情况?

当您收到“访问被拒绝”消息时,VBScript运行的用户身份是什么?我敢打赌是
NT AUTHORITY\networkservice
,这也许可以解释这一点

当您通过cmd登录或双击资源管理器运行任何操作时,进程将在当前用户的用户标识(安全上下文)下运行。当您在本地控制台会话(例如服务会话)之外运行它时,它通常在父服务进程的用户标识下运行

“服务”指的是Windows服务(您在Services.msc中看到的)还是web服务?如果它是一个web服务,那么它将在当前IIS应用程序池的用户标识下运行


尝试从web服务脚本运行“whoami”(它是一个命令行程序),并让它将控制台输出重定向到一个文件。这将告诉您当前使用的用户身份。

您知道错误吗?我在stackoverflow上搜索了。。。。我来看看那个链接。我们做了所有这些操作,但是运行进程监视器的提示是一个很好的提示。我们做了一次尝试。我们运行了进程监视器,但我看不到注册表访问…?我们做了whoami技巧,它是正确的用户。在此之后,我们尝试重新启动,现在它正在工作。