0

我有一个作为 Windows 服务(用户 = 系统)启动的进程 A。我还有一个进程 B,我在自己的帐户下启动(在管理员组中)。

我观察到了几种行为:

1-进程A首先作为Windows服务(用户系统)启动。然后进程 B 将不会运行(用户是管理员):它可以启动但它会立即关闭而不会出现错误,即使在 Windows 事件中也是如此。

2-首先启动进程B(用户是管理员),它运行正常。然后进程A作为Windows服务(用户系统)启动,一切正常。

3-进程A首先作为Windows服务启动(以管理员身份运行)。然后启动进程 B(用户是管理员),一切正常。

4-进程A首先作为Windows服务(用户系统)启动。然后进程 B 也作为 Windows 服务启动(用户系统)。一切正常。

在我看来,某些权限的配置有问题,但我找不到哪一个。此外,进程 A 和进程 B 使用一些共同的 DLL,所以问题可能存在,但我再次找不到哪个是有故障的 dll。

我希望你们中的一些人能帮助我解决这个问题!我要运行的用例是数字 1。

弗雷德里克

4

1 回答 1

0

问题是其中一个 dll 使用共享内存和互斥锁。如果进程 A 以超级用户身份运行,则使用超级用户权限创建共享内存和互斥锁。

以较低用户权限启动的进程 B 将无法初始化或重新使用共享内存和互斥锁,因为它没有足够的权限来执行此操作。

我的解决方案:解决方案 1- 停止在 dll 中使用共享内存和互斥锁。解决方案 2-即使无法创建/访问共享内存或互斥体,也能够以降级模式继续。解决方案 3- 使用同一用户运行这两个进程。

我将采用解决方案 2,因为它最适合我的用例。

于 2013-02-01T08:56:58.593 回答