自动解锁Bitlocker加密硬盘

自动解锁Bitlocker加密硬盘有两种方式,一是将系统盘也加密,然后数据盘启动自动解锁。但是系统盘加密会降低系统运行速度,还是比较明显的。

第二种方式就是编写程序,开机后启动程序或者开机自动运行,解锁数据盘。参考:https://social.msdn.microsoft.com/Forums/vstudio/en-US/26c44d82-7aa3-4d18-a963-b86eb617a609/unlock-bit-locker-programmatically?forum=csharpgeneral。

使用Visual studio新建一个c#的控制台项目。

 因为ManagementScope需要管理员权限,所以程序启动时,还要自动要求“管理员”权限。

using System;
using System.Management;

namespace unlockbitlocker
{
    class Program
    {
        static void Main(string[] args)
        {
            string programStartLocation = System.Reflection.Assembly.GetExecutingAssembly().Location;
            Console.WriteLine(programStartLocation);
            var path = new ManagementPath();
            path.NamespacePath = "\\ROOT\\CIMV2\\Security\\MicrosoftVolumeEncryption"; path.ClassName = "Win32_EncryptableVolume";
            var scope = new ManagementScope(path, new ConnectionOptions() { Impersonation = ImpersonationLevel.Impersonate });
            scope.Options.EnablePrivileges = true; //enables required privileges
            var management = new ManagementClass(scope, path, new ObjectGetOptions());
            foreach (ManagementObject vol in management.GetInstances())
            {
                Console.WriteLine("----" + vol["DriveLetter"]);
                switch ((uint)vol["ProtectionStatus"])
                {
                    case 0:
                        Console.WriteLine("not protected by bitlocker");
                        break;
                    case 1:
                        Console.WriteLine("unlocked");
                        break;
                    case 2:
                        Console.WriteLine("locked");
                        break;
                }
                if ((uint)vol["ProtectionStatus"] == 2)
                {
                    Console.WriteLine("unlock this driver ...");
                    vol.InvokeMethod("UnlockWithPassphrase", new object[] { "Bitlocker解锁密码" });
                    Console.WriteLine("unlock done.");
                }
            }
        }
    }
}

我们需要修改项目Properties文件中app.manifest文件,app.manifest文件默认是不存在的,需要通过以下操作来自动添加该文件。

(1)进入菜单项目-->XX属性。

(2)选择“安全性”栏。

(3)将“启用ClickOnce安全设置”勾选上。

  这样在Properties目录下就自动生成了app.manifest文件。打开该文件,将trustInfo/security/requestedPrivileges节点的requestedExecutionLevel的level的值修改为requireAdministrator即可。

 然后,回到项目属性安全性项目,将“启用ClickOnce安全设置”取消勾选。 最后重新编译程序就可以了,程序在\bin\Release目录下,双击,提示确认管理员权限运行,点是即可。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值