我有一个应用程序需要检测它是否以提升的权限运行.我目前的代码设置如下:
static bool IsAdministrator()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole (WindowsBuiltInRole.Administrator);
}
Run Code Online (Sandbox Code Playgroud)
这可以检测用户是否是管理员,但如果以没有提升的管理员身份运行则不起作用.(例如在vshost.exe中).
如何判断高程是否[已经生效或]可能?
我的Vista应用程序需要知道用户是"以管理员"(提升)还是以标准用户(非提升)方式启动它.我怎样才能在运行时检测到它?
我有一个应用程序,它是另一个应用程序(我的主要应用程序)的启动器.启动器进入FTP服务器,下载更新并安装它们.但是,更新可执行文件需要将一些DLL和EXE复制到主应用程序的安装目录中,该目录位于Program Files中.因此,我目前需要提升更新程序的权限.
这是一个问题,因为我的应用程序在启动时启动,并且通常只会加载到系统托盘(该应用程序与messenger/skype相当).如果我在尝试"静默"更新应用程序时开始在屏幕上弹出UAC警告,那就不再那么沉默了.
我现在看到的唯一避免问题的方法是向所有用户授予程序文件安装目录的权限,但我不愿意这样做.还有其他想法吗?
我使用的是Windows 7,应用程序都在C#中.