我正在尝试验证我的用户是否有权控制MSDTC服务,以便在关闭时可以启动它。实际上,第一步是验证它是否已经启动,并且启动它并不是至关重要的。 该应用程序使用.Net 4.0,因此在新的安全模型下运行。
以下代码在使用具有所需权限的用户运行时有效,但对普通用户(非管理员)的Stop()方法失败:
var permission = new ServiceControllerPermission(ServiceControllerPermissionAccess.Control, Environment.MachineName, "MSDTC");
permission.Demand(); // Is this even considered in .Net 4.0?
var MSDTC = new ServiceController("MSDTC", Environment.MachineName);
MSDTC.Stop(); // Crashes with "Access is denied" for an ordinary user.
MSDTC.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(10));
MSDTC.Start();
所以,我的问题是如何验证用户是否具有运行操作所需的权限?一般情况下,我如何检查其他资源,如寄存器等?
我已经找了很多解决方案,但没找到任何东西。当然,我已经阅读了有关新安全模型的MSDN文档,但没有找到我可以在这种情况下使用的任何内容。