CSkin博客

标题: 【Exe是否是管理员运行】C#判断当前程序是否通过管理员运行 [打印本页]

作者: 乔克斯    时间: 2014-11-18 10:58
标题: 【Exe是否是管理员运行】C#判断当前程序是否通过管理员运行
【Exe是否是管理员运行】C#判断当前程序是否通过管理员运行
说明:
   在Win7下有时候经常会出现程序无法写入注册表或者其他完成一些其他对系统数据的读取和修改,这个时候大多是没有权限,当然这个是可以通过在程序可执行文件上面右 键》》以管理员身份运行来解决的。

代码:
[C#] 纯文本查看 复制代码
public static bool IsAdministrator()
        {
            WindowsIdentity current = WindowsIdentity.GetCurrent();
            WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);
            //WindowsBuiltInRole可以枚举出很多权限,例如系统用户、User、Guest等等
            return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
        }


编后语:
    当然有的系统或者程序默认就是管理员权限的,有的不是,有了这个判断就可以避免本身没有权限读取而我们有没有预料到导致程序异常的问题了。
当然可以给用户一个提示告诉用户如何给相应的运行权限。

作者: qq836150200    时间: 2014-12-17 17:06
受教…………
作者: qq836150200    时间: 2014-12-17 17:06
受教…………
作者: 乔克斯    时间: 2014-12-18 10:28
qq836150200 发表于 2014-12-17 17:06
受教…………

头像卡哇伊捏。
作者: Misaya    时间: 2014-12-29 15:49
VISTA 和 Windows 7 都使用了UAC来控制程序访问,对于一些需要使用管理员身份运行的程序就得右键以管理员身份运行。
C# 编程中可以使程序自动使用管理员身份运行,也就是我们常常看到一些程序的图标上会冒出个盾牌。
方法:在源码的Properties目录中找到 app.manifest,
将其中level="asInvoker" 改成 level="requireAdministrator"就可以了,
如果没有app.manifest文件可以打开项目属性,找到安全性项,勾上启用 ClickOnce 安全设置,这时会生成app.manifest文件,
然后再把勾去掉,不要选上。
这样你重新编译,你的程序图标上就会出现个小盾牌了,就自动以管理员身份运行你的程序,无需右键打开。
作者: Misaya    时间: 2014-12-29 15:50
[XML] 纯文本查看 复制代码
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC 清单选项
            如果要更改 Windows 用户帐户控制级别,请用以下节点之一替换
            requestedExecutionLevel 节点。

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            指定 requestedExecutionLevel 节点将会禁用文件和注册表虚拟化。
            如果要利用文件和注册表虚拟化实现向后
            兼容性,则删除 requestedExecutionLevel 节点。
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
      <applicationRequestMinimum>
        <defaultAssemblyRequest permissionSetReference="Custom" />
        <PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
      </applicationRequestMinimum>
    </security>
  </trustInfo>

作者: 乔克斯    时间: 2014-12-29 16:04
Misaya 发表于 2014-12-29 15:50
[mw_shl_code=xml,true]
   
      

这个贴的代码主要是,在程序中判断你是否是管理员权限执行的一个作用。
作者: 881966    时间: 2018-12-6 07:23
谢谢分享,学习学习
作者: jacksonwong    时间: 2019-5-18 12:50
谢谢分享了!




欢迎光临 CSkin博客 (http://bbs.cskin.net/) Powered by Discuz! X3.2