精华内容
下载资源
问答
  • Android项目:手机安全卫士(8)—— 管理员权限1 介绍关于手机防盗的功能,前面我们已经完成了一半,今天将要完成另一半,我们先来看看整体的功能描述:现在,我们还差两个功能: 远程删除数据 远程锁屏 需要说明...

    Android项目:手机安全卫士(8)—— 管理员权限

    1 介绍

    关于手机防盗的功能,前面我们已经完成了一半,今天将要完成另一半,我们先来看看整体的功能描述:

    手机防盗

    现在,我们还差两个功能:

    • 远程删除数据
    • 远程锁屏

    需要说明一下,完成今天的任务,你就可以开发一款 App:一键锁屏,是不是很厉害,哈哈。

    项目源码地址(实时更新):https://github.com/xwdoor/MobileSafe

    2 管理员权限

    不管是远程删除数据,还是远程锁屏,都需要系统的管理员权限,既然如此,那让我们先来看看怎么获取管理员权限。
    首先,创建一个 Receiver:AdminReceiver,继承自 DeviceAdminReceiver,看清楚哦,不是继承自 BroadcastReceiver:

    
        /**
         * Created by XWdoor on 2016/3/9 009 10:03.
         * 博客:http://blog.csdn.net/xwdoor
         */
        public class AdminReceiver extends DeviceAdminReceiver {
    
        }

    这个 Receiver 什么都不做,只是一个傀儡,重点在于它在清单文件 AndroidManifest.xml 中进行注册时的配置,如下所示:

    
        <receiver
            android:name=".receiver.AdminReceiver"
            android:description="@string/device_admin_description"
            android:label="@string/device_admin"
            android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin" /> 
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>

    需要注意几点,需要配置一个权限属性:android:permission="android.permission.BIND_DEVICE_ADMIN",除此之外,我们还需要设置它的配置数据,标明我们将需要那些操作,在这里,我们创建一个 xml 配置文件:device_admin.xml,内容如下:

    
        <device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    
            <uses-policies>
                <!-- 远程锁屏权限 -->
                <force-lock />
    
                <!-- 远程删除数据 -->
                <wipe-data />
            </uses-policies>
    
        </device-admin>

    除了这两个权限之外,其实还有其他很多的权限,如设置锁频密码、禁用摄像头、加密存储卡 等策略,这里我们只用到两个。好了,这些准备工作做完,我们就可以获取并激活管理员权限了。

    3 激活管理员权限

    配置好参数之后,就需要在代码中提示用户激活权限了,首先在 BaseActivity 中初始化设备管理器:

    
        // 设备策略管理器
        mDPM = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
        // 初始化管理员组件
        mDeviceComponentName = new ComponentName(this, AdminReceiver.class);

    然后添加激活管理员权限的方法,如下:

    
        /**
         * 激活超级管理员权限 设置->安全->设备管理器
         */
        public void activeAdmin() {
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceComponentName);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                    "手机安全卫士-手机防盗,您的好帮手,值得拥有");
            startActivity(intent);
            showToast("请先激活手机防盗的管理员权限");
        }

    然后在手机防盗界面 AntiTheftActivity,添加判断,并提示用户激活:

    
        //如果没有激活权限,提示激活
        if(!mDPM.isAdminActive(mDeviceComponentName)){
            activeAdmin();
        }

    激活权限

    4 远程锁屏

    有了上面的准备,锁屏就简单了,直接调用锁屏的 api 即可:

    
        else if ("#*lockscreen*#".equals(msg)) {
            //远程锁屏
            lockNow(context);
            abortBroadcast();
        }
    
        /**
         * 立即锁屏
         */
        public void lockNow(Context context) {
            // 设备策略管理器
            DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
            // 初始化管理员组件
            ComponentName mDeviceComponentName = new ComponentName(context, AdminReceiver.class);
    
            if (mDPM.isAdminActive(mDeviceComponentName)) {
                mDPM.lockNow();// 立即锁屏
                //mDPM.resetPassword("123456", 0);// 重新设置密码, 传""取消密码
            }
        }

    5 删除数据

    同样,也是调用 api 即可

    
        else if ("#*wipedata*#".equals(msg)) {
            //删除数据
            wipeData(context);
            abortBroadcast();
        }
    
        /**
         * 清除数据
         */
        public void wipeData(Context context) {
            // 设备策略管理器
            DevicePolicyManager mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
            // 初始化管理员组件
            ComponentName mDeviceComponentName = new ComponentName(context, AdminReceiver.class);
    
            if (mDPM.isAdminActive(mDeviceComponentName)) {
                mDPM.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);// 清除内部数据和sdcard
            }
        }

    6 总结

    今天的内容是干货有木有,可以做一键锁屏了,可以设置锁频密码、禁用摄像头、加密存储卡了,很兴奋吧。

    最近的学习强度增加了,是因为需要抽出时间做其他事,所以节奏加快了。

    项目源码地址(实时更新):https://github.com/xwdoor/MobileSafe

    展开全文
  • 在 Windows 系统中,管理员权限和非管理员权限运行的程序之间不能使用 Windows 提供的通信机制进行通信。对于部分文件夹(ProgramData),管理员权限创建的文件是不能以非管理员权限修改和删除的。 然而,一个进程...

    在 Windows 系统中,管理员权限和非管理员权限运行的程序之间不能使用 Windows 提供的通信机制进行通信。对于部分文件夹(ProgramData),管理员权限创建的文件是不能以非管理员权限修改和删除的。

    然而,一个进程运行之后启动的子进程,会继承当前进程的 UAC 权限;于是有时我们会有降权运行的需要。本文将介绍 Windows 系统上降权运行的几种方法。


    本文的降权运行指的是:

    1. 有一个 A 程序是以管理员权限运行的(典型的,如安装包);
    2. 有一个 B 程序会被 A 启动(我们期望降权运行的 B 程序)。

    如何判断当前进程的 UAC 权限

    通过下面的代码,可以获得当前进程的 UAC 权限。

    var identity = WindowsIdentity.GetCurrent();
    var principal = new WindowsPrincipal(identity);
    

    而如果要判断是否是管理员权限,则使用:

    if (principal.IsInRole(WindowsBuiltInRole.Administrator))
    {
        // 当前正在以管理员权限运行。
    }
    

    此代码如果在 .NET Core 中编写,需要额外安装 Windows 兼容包:Microsoft.Windows.Compatibility。+

    方法一:使用 runas 命令来运行程序(推荐)

    使用 runas 命令来运行,可以指定一个权限级别:

    > runas /trustlevel:0x20000 "C:\Users\walterlv\Desktop\walterlv.exe"
    
    var subProcessFileName = "C:\Users\walterlv\Desktop\walterlv.exe";
    Process.Start("runas.exe", $"/trustlevel:0x20000 {subProcessFileName}");
    

    关于 runas 的更多细节,可以参考我的另一篇博客:

    方法二:使用 explorer.exe 代理运行程序(推荐)

    因为绝大多数用户启动系统的时候,explorer.exe 进程都是处于运行状态,而如果启动一个新的 explorer.exe,都会自动激活当前正在运行的进程而不会启动新的。

    于是我们可以委托默认以普通权限运行的 explorer.exe 来代理启动我们需要启动的子进程,这时启动的子进程便是与 explorer.exe 相同权限的,也就是降权运行了。

    var subProcessFileName = "C:\Users\walterlv\Desktop\walterlv.exe";
    Process.Start("explorer.exe", subProcessFileName);
    

    通过以上代码,walterlv.exe 就会以与 explorer.exe 相同权限运行,也就是降权运行了。

    下面的代码,如果发现自己是以管理员权限运行的,那么就降权重新运行自己,然后自己退出。

    var identity = WindowsIdentity.GetCurrent();
    var principal = new WindowsPrincipal(identity);
    if (principal.IsInRole(WindowsBuiltInRole.Administrator))
    {
        // 检测到当前进程是以管理员权限运行的,于是降权启动自己之后,把自己关掉。
        Process.Start("explorer.exe", Assembly.GetEntryAssembly().Location);
        Shutdown();
        return;
    }
    

    方法三:在启动进程时传入用户名和密码

    ProcessStartInfo 中有 UserNamePassword 属性,设置此属性可以以此计算机上的另一个用户身份启动此进程。如果这个用户是普通用户,那么就会以普通权限运行此进程。

    var processInfo = new ProcessStartInfo
    {
        Verb = "runas",
        FileName = "walterlv.exe",
        UserName = "walterlv",
        Password = ReadPassword(),
        UseShellExecute = false,
        LoadUserProfile = true
    };
    Process.Start(processInfo);
    

    上面的 ReadPassword 函数来自我的另一篇博客:如何让 .NET Core 命令行程序接受密码的输入而不显示密码明文 - walterlv

    然而,此方法最大的问题在于——产品级的程序,不可能也不应该知道用户的密码!所以实际上这样的方法并不实用。

    方法四:使用 Shell 进程的 Access Token 来启动进程

    此方法需要较多的 Windows API 调用,我没有尝试过这种方法,但是你可以自行尝试下面的链接:


    参考资料


    我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

    如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

    知识共享许可协议

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

    展开全文
  • C#获取管理员权限

    千次阅读 2017-08-03 11:09:09
    1、 在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找到“安全性”选项, 2、勾选“启用ClickOnce安全设置”, 3、这时,在项目下面会多出一个“app.manifest”的文件,选中它,并...

    1、 在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找到“安全性”选项,

    2、勾选“启用ClickOnce安全设置”,

    3、这时,在项目下面会多出一个“app.manifest”的文件,选中它,并找到代码段<requestedExecutionLevel level="asInvoker" uiAccess="false" />,将其改为:<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />,

    打开:

    将上图部分修改为:

    4、改正后,不要急于重新编译生成,再次打开“属性--安全性”界面,

    将“启用ClickOnce安全设置”前面的勾去掉后再编译运行。 不然程序会报错无法运行。

     

    5、最后,保存修改,重新编译运行程序。

    打开程序时,会提示“用户账户控制”来获取管理员权限运行,点击“是”则获取了管理员权限。

    展开全文
  • NTFS安全权限

    千次阅读 2021-04-03 17:35:42
    文章目录·NTFS安全权限一、NTFS权限概述二、文件系统概述三、NTFS文件系统特点四、修改NTFS权限1、取消权限继承2、实验案例3、权限累加4、拒绝最大5、取得所有权6、强制继承7、文件复制和移动对权限的影响 ...

    ·NTFS安全权限

    一、NTFS权限概述

    1、通过设置NTFS权限,实现不同的用户访问不同对象(文件和文件夹)的权限

    2、分配了正确的访问权限后,用户才能访问其资源

    3、设置权限防止资源被篇改、删除

    在这里插入图片描述

    二、文件系统概述

    文件系统即在外部存储设备上组织文件的方法

    常见的文件系统:

    FAT  		Windows
    NTFS		Windows
    EXT			Linux常见
    

    格式化就是把硬盘总的所有数据抹除,然后重新在该硬盘上打格子(即存储单元),格子有大有小,默认4096字节(4KB),若该硬盘专门用于存放特大文件(几十g),可选择64KB,若只用于存放超小文件,可选择更小的512字节

    若不选择快速格式化,磁盘抹空后,将会对每一个格子检查硬盘磁道是否损坏,耗时太长

    在这里插入图片描述

    FAT转化为NTFS:convert 盘符/fs:ntfs #数据不丢失,但不可逆!

    三、NTFS文件系统特点

    1.提高磁盘读写性能
    2.可靠性
    加密文件系统
    访问控制列表(ACL)(设置权限)
    3.磁盘利用率
    压缩
    磁盘配额
    4.支持单个文件大于4个G

    四、修改NTFS权限

    文件权限

    文件权限 权限内容
    完全控制 拥有读取、写入、修改、删除文件和特殊的权限
    修改 拥有读取、写入、修改、删除文件的权限
    读取和执行 拥有读取、执行文件的权限
    读取 拥有读取文件的权限
    写入 拥有修改文件内容的权限
    特殊权限 拥有控制文件权限列表的权限

    文件夹权限

    文件夹权限 权限内容
    完全控制 拥有对文件及文件夹读取、写入、修改、删除文件和特殊的权限
    修改 拥有对文件及文件夹读取、写入、修改、删除文件的权限
    读取和执行 拥有对文件夹中的文件下载、读取、执行的权限
    列出文件夹内容 可以列出文件夹的内容
    读取 拥有对文件夹中的文件下载、读取的权限
    写入 拥有在文件夹中创建新文件的权限
    特殊权限 拥有控制文件权限列表的权限(赋予别人权限等)

    打开一个磁盘,右键属性,若上方有安全选项说明是NTFS文件系统

    在这里插入图片描述

    1、取消权限继承

    作用:取消后,可以任意修改权限列表

    方法:文件夹右键属性—安全—高级—去掉第一个对号—选择复制—确定

    在这里插入图片描述

    2、实验案例

    背景:现有两个用户a和b,在D盘下有一个文件夹机密,里面包含一个txt文件和一个名为密码的文件夹,密码中有一个名为密码1的txt文件

    目的:现要求a用户可以访问机密文件夹,读取、运行文件,b用户只能访问、添加文件

    2.1、取消权限继承

    在这里插入图片描述

    2.2、添加用户a和b

    因为要分别设置权限,所以不能对内置组直接设权,删除其他内置组,并把a和b添加进来

    在这里插入图片描述

    2.3、赋权

    可以发现,a的权限不需要更改

    在这里插入图片描述

    那么只需要对b赋权即可

    在这里插入图片描述

    2.4、验证权限

    登录a用户进入D盘的机密文件夹,无法对其删除/写入/修改,只能读取、打开文件

    在这里插入图片描述
    在这里插入图片描述

    登录b用户进入D盘的机密文件夹,无法对其读取/删除/修改,只能读取文件夹和创建文件

    在这里插入图片描述

    发现竟然无法对自己新建的文件或文件夹重命名或删除(这是因为此文件或文件夹因继承了父文件夹的权限导致,通过取消继承,并修改权限便能正常操作)

    在这里插入图片描述

    注:在实验中,密码文件夹同样继承了父文件夹(机密)的权限

    3、权限累加

    一个用户同时属于多个组时,权限是累加的!即多方权限累加

    4、拒绝最大

    当一个用户被一个权限同时允许和拒绝时,这个用户是被拒绝的!

    允许与拒绝碰撞时,碰撞最大!

    5、取得所有权

    只有管理员组可进行此操作

    b用户在文件夹(机密)中创建了一个新的文件夹,并通过取消继承,删除了除自己外的所有用户(包括管理员)

    在这里插入图片描述

    此时登录管理员账户是无法访问此文件夹的

    在这里插入图片描述

    解决方案:

    选中此文件夹,右键属性—安全

    在这里插入图片描述

    高级—所有者—选中管理员—打钩 替换子容器及对象的所有者—确定—是

    在这里插入图片描述

    重新右键属性—安全

    此时已将b踢出权限

    在这里插入图片描述

    6、强制继承

    作用:对下强制继承父子关系

    方法:文件夹右键属性 – 安全 – 高级 – 勾选第二个对号—确定—是

    在这里插入图片描述

    7、文件复制和移动对权限的影响

    文件复制后,文件的权限会被目标文件的权限所覆盖(无论同分区还是跨分区)。
    跨分区移动文件权限会被覆盖,同分区移动文件权限会被保留。

    展开全文
  • windows 管理员权限编辑文件

    千次阅读 2019-09-06 17:02:04
    Windows系统中,修改hosts时,保存的时候会说需要管理员权限,不能保存。三种方法:修改权限,粘贴覆盖文件,notepad打开。 方法一:修改权限。 找到文件:C:\Windows\System32\drivers\etc\hosts,右键-》属性-...
  •  在Vista/Win7下,加强了对安全的管理,对注册表修改,系统目录的文件操作,都需要管理员权限才能完成(当然虚拟存储机制,表面上也相当于能操作)。所以,对于程序中相关操作的,这时候,就要求我们的程序必须拥有...
  • win10获取管理员权限方法

    千次阅读 2018-10-14 17:01:06
    '1.点击我的电脑,选择需要获取权限的盘,右击属性 2.点击“安全" 选择 administrators:即为管理员权限
  • 提升管理员权限

    千次阅读 2017-04-24 17:34:05
     Win+R调出运行框,如果在输入栏的下方如下红色字样,则表示提升管理员权限成功。  首先,Win+R直接输入secpol.msc回车,打开本地策略。  选择本地策略——安全选项  用户账号控制:以...
  • Win7 获取管理员权限

    千次阅读 2018-07-06 16:47:54
    Win7 获取管理员权限 直接上干货 1、控制面板——系统和安全——管理工具——计算机管理 2、计算机管理——本地用户和组——用户 3、Administrator——属性 4、取消勾选“账户已禁用” ...
  • 需要管理员权限解决办法

    万次阅读 2017-01-08 12:04:39
    在嵌入式开发的过程中,许多驱动和注册文件的修改,复制,删除经常会碰到“需要管理员权限才能操作”的问题,那么这个问题应该怎么来解决呢? 首先,点开对应文件或文件夹的属性--安全--高级 我们可以看到...
  • [Windows10]Win10如何获取最高管理员权限

    万次阅读 多人点赞 2018-09-17 17:48:56
    使用Windows10的时候常常发现我们没有管理员权限,这对我们使用造成了巨大麻烦。今天我来分享一下 win10里面怎么获取最高管理员权限。 (一)Windows10专业版/企业版/教育版方法 1,按下win+R键唤出“运行”窗口,...
  • win10没有管理执行权限

    千次阅读 2018-11-23 18:19:39
    在安装某些软件,或者运行某些程序时,往往需要运行管理员权限,或者在删除系统盘c盘的重要文件时候,也需要获取管理员权限,也叫做获得administrator权限,那么如何获取电脑运行的管理员权限呢 1、在电脑的搜索框...
  • Android应用程序申请系统管理员权限

    千次阅读 2016-08-27 11:43:55
    Android应用程序具备系统管理员权限 ONE Goal, ONE Passion ! 一些操作比如: 自动锁屏.清除数据.等都需要获取系统管理员权限才能够操作.那么怎么才能获得管理员权限呢?程序向获得系统管理员权限步骤: 1, 声明一个...
  • python如果获取windows管理员权限(一)

    万次阅读 多人点赞 2018-01-08 20:06:35
    一种解决办法是在管理cmd中运行我们的脚本(右键以 run as administrator),但是这种办法不够优雅。我们经常看到当我们运行一些需要高权限的软件时,会弹出以下对话框 这被称为用户安全控制,简
  • 【mysql】mysql有哪些权限

    千次阅读 2016-09-08 17:41:28
    MySQL包含哪些权限,共29个。 权限 说明 举例 usage 连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。 该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收...
  • python如果获取windows管理员权限(二)

    万次阅读 多人点赞 2018-01-08 20:14:21
    我们在python如果获取windows管理员权限(一)中谈到了UAC的问题。 很多时候我们不希望我们的软件弹出UAC提示,这个时候我们可以通过注册表的方法去解决。这其实已经不在是一个安全的编程了,它变成了一把双刃剑...
  • windows 7 对安全方面的管理要比XP严格多了,但是如果你写了一个程序需要以管理员权限运行怎么办
  • 实例:员工电脑都是USER权限,但是运行VPN是总是提示“用户账户控制”,要求输入管理密码,怎么让员工仍然使用USER权限账户,但是又能运行VPN呢 解决:在dos命令行使用runas命令 用法:RUNAS [ [profile | /...
  • windows 10 提升管理员权限

    万次阅读 热门讨论 2018-04-21 16:26:53
    在我们编写代码的过程中,部分程序的运行就需要提升管理...如果你的系统在下图中的红色矩形框内此字样,则证明你已经拥有管理员权限。否则,输入“secpol.msc”之后回车。2.双击“本地策略 ”,双击“安全选项”,
  • win10解决需要admin权限才能删除文件的问题 1、按“win+R”键。输入“gpedit.msc”后确定。 2、依次点击“计算机配置”、“Windows配置”、“安全设置”、“本地策略”、“安全选项”。 3、将用户账户控制:以管理...
  • C# 设置应用程序需要管理员权限

    千次阅读 2019-04-25 15:37:19
    当程序中有些操作需要使用到管理员权限时,如果在启动程序时没有使用管理员权限启动,在运行过程中实现不了我们需要的效果,这儿就需要对应用程序的启动加以限制。 给应用程序设置管理员权限 1.在Visual Studio 中...
  • 共享权限安全权限的区别

    万次阅读 2011-02-15 15:07:00
    共享权限安全权限的区别 NTFS权限是对文件夹设置的 可以说对用户对文件夹什么权限就是看NTFS权限 而共享权限仅在你共享文件夹的时候出现 而网络上的用户要访问共享文件夹的时候要看NTFS+共享权限的...
  • C++ windows管理员权限运行程序

    千次阅读 2019-05-05 15:02:44
    我们已用户权限运行程序,时候需要在指定的路径下修改文件,而因为没有管理员权限导致失败。此时,我们可以使用管理员权限运行一个新的进程,用这个新的进程来执行修改任务。 判断是否具有管理员权限 //判断...
  • 最近恰逢公司更换新PC机,重装了Win7...您需要提供管理员权限 拒绝访问 等等…… 这种情况,我宁愿暂时放弃安全性,来提高便利性。 关闭UAC是一个方法,但未必有效,其实个更简单的方法。 找到C:\Windows\explorer
  • c#程序如何获取管理员权限

    千次阅读 2017-09-22 16:25:31
    点击项目属性 ——> 安全性,将”启用ClickOnce安全设置”和“这是可以完全可信的应用程序”勾选上,这时项目中会出现新文件app.manifest,双击打开,将 改为 然后先不要忙着编译,不然编译出错,出现“Click...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 201,337
精华内容 80,534
关键字:

安全员的权限有哪些