x509数字证书导入-然后删除自身
时间:2022-07-24
本文章向大家介绍x509数字证书导入-然后删除自身,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这种程序的使用场景,需要给客户一个证书,但不能把证书直接给他让他安装,程序中需要用到给客户的私钥,但又不允许客户将这个证书再去授权给其它人。
重点并不是代码,是如何对用户隐藏需要添加的资源 ,以文本为例
1.将文件添加到资源中,直接粘贴就可以
2.打开解决方案,
修改文件属性 生成操作为嵌入的资源。如果config没有什么特殊需要配置的,那么只需要给客户一个exe就可以了
下边是代码
static void Main(string[] args)
{
Console.WriteLine("正在执行数字证书写入");
try
{
X509Certificate2 certificateClient = new X509Certificate2(global::X509Build.Properties.Resources.Client, "123",X509KeyStorageFlags.PersistKeySet);
X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Remove(certificateClient);
store.Add(certificateClient);
store.Close();
string delfilepath = AppDomain.CurrentDomain.BaseDirectory + "del.bat";
FileStream fs = new FileStream(delfilepath, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("@echo off ");
sw.WriteLine("ping -n 1 127.1>nul");
sw.WriteLine("del X509Build.exe");
sw.WriteLine("del %0");
sw.Close(); sw.Dispose();
fs.Close(); fs.Dispose();
Thread t = new Thread(() =>
{
Process proc = new Process();
proc.StartInfo.FileName = delfilepath;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.UseShellExecute = false;
proc.Start();
});
t.Start();
}
catch
{
Console.WriteLine("数字证书写入失败");
Console.ReadKey();
}
}
- 用 WPF 写的颜色拾取器
- $(window).load()与$(document).ready()的区别
- silverlight 双击事件
- Silverlight button 图片切换样式
- 【腾讯云CDB】教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇
- Caliburn.Micro学习笔记(一)----引导类和命名匹配规则
- SpringMVC下Excel文件的上传下载
- Spring-AOP之aspectj注解方式
- wpf键盘记录器
- WPF之TreeList的实现方法(一)
- Silverlight 2 Beta 2的Isolated Storage
- hive安装部署
- java匿名内部类简介
- 精典算法之详解 河内之塔
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- optimizer.zero_grad()
- helm——工具使用举例
- Helm工具安装配置——2.14.3
- 论程序的健壮性——就看Redis
- SAP Spartacus路由参数的默认配置
- 这次用近万字的讲解带你干掉堆!
- Postgresql PL/PGSQL 程序语言系列 1 (存储过程过时了吗,与函数)
- Postgresql 从那个点看要优于 ORACLE SQL SERVER MYSQL
- VBA解析VBAProject 04——run length encoding
- TRTC Android端开发接入学习之实现语音聊天室(九)
- VBA解析VBAProject 03——解析dir流
- VBA解析VBAProject 01——实现的功能
- VBA解析VBAProject 02——解析
- 光怪陆离的世界之Delaunay三角剖分和Voronoi图
- Angular里的routerLink不能按照期望工作的一个问题