我有一个作为Windows服务启动的进程A(user = System)。我还有一个进程B,我在自己的帐户下启动(在组管理员中)。
我观察过几种行为:
1-进程A首先作为Windows服务(用户系统)启动。然后进程B将不会运行(用户是管理员):它可以启动,但它会立即关闭而不会出现错误,即使在Windows事件中也是如此。
2-进程B首先启动(用户是管理员),运行正常。然后进程A作为Windows服务(用户系统)启动,一切正常。
3-进程A首先作为Windows服务(以管理员身份运行)启动。然后启动进程B(用户是管理员),一切正常。
4-进程A首先作为Windows服务(用户系统)启动。然后,进程B也作为Windows服务启动(用户系统)。一切正常。
在我看来,某些权利的配置存在问题,但我找不到哪一个。此外,进程A和进程B使用一些共同的DLL,所以也许问题可能存在,但我再也找不到哪个是错误的dll。
我希望你们中的一些人可以帮助我解决这个问题!我想要运行的用例是数字1。
弗雷德里克
答案 0 :(得分:0)
问题是其中一个dll使用共享内存和互斥锁。如果进程A以超级用户身份运行,则使用超级用户权限创建共享内存和互斥锁。
以较低的用户权限启动的进程B将无法初始化或重新使用共享内存和互斥锁,因为它没有足够的权限来执行此操作。
我案中的解决方案: 解决方案1-在dll中停止使用共享内存和互斥锁。 解决方案2-即使无法创建/访问共享内存或互斥锁,也能够以降级模式继续运行。 解决方案3-使用同一个用户运行两个进程。
我将采用解决方案2,因为它最适合我的用例。