提问人:Giansi87 提问时间:11/17/2023 最后编辑:Remy LebeauGiansi87 更新时间:11/17/2023 访问量:53
Delphi Windows服务作为调度程序,用于在多个用户(服务器或Saas)下运行作业
Delphi Windows Service as Scheduler for run Jobs under multiple User (Server or Saas)
问:
我在 Delphi 中编写了一个服务,它是一个简单的作业调度器,例如运行查询或运行 UI 软件或检查冻结等。
一切都在一台 PC 上运行,但我需要在服务器上安装该服务并管理所有登录的用户。 有些作业可以为所有用户运行,但有些作业不能为某些用户运行,而为其他用户运行。
我已经尝试过在这里找到的其他东西,但是当我尝试获取服务的当前用户时,我得到了.我读到对于以管理员身份安装的服务,这是正确的,但是我怎样才能获得登录用户并确保为正确的用户运行作业?GetUserName()
SYSTEM
答:
1赞
Remy Lebeau
11/17/2023
#1
服务和每个登录用户在单独的终端会话中运行。 获取调用它的会话的用户名。这就是您在服务会话中被调用时看到的原因。GetUserName()
SYSTEM
该服务可以使用 WTS API 枚举活动用户会话 (WTSEnumerateSessions
()) 并从中获取信息 (WTSQuerySessionInformation()
),例如其用户名。
若要在特定用户会话中运行外部进程,该服务可以使用 WTSQueryUserToken
() 获取会话的用户令牌,然后使用 CreateProcessAsUser()
以该用户身份运行该进程。
下一个:我需要节点.js压缩模块吗?
评论