急求文件高级加密,重开贴!

Doublehappywolf 2009-12-04 03:22:58
现在有个项目要做文件加密工作。把文件转换成二进制加密实现了。
现在要做的是,对已加密过的文档,当点击打开时要弹出解密的对话框进行解密怎么做;
还有一个更重要的问题是,打开的文件如果是关闭了或者是另存了也要是处于加密状态。
我打开文件调用的是系统自带的软件!
望高手赐教,有多少分可以给多少分!
...全文
249 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2009-12-05
  • 打赏
  • 举报
回复
这种功能通常是用文件系统驱动程序来实现,C#做不了。
此外,也可以用应用程序通过API Hook来实现,不过这种做法效果很差,而且很可能被认作是病毒。
cnzdgs 2009-12-05
  • 打赏
  • 举报
回复
写错了,更正一下,是每年几千块。
cnzdgs 2009-12-05
  • 打赏
  • 举报
回复
驱动程序一般用C或C++写,很少用汇编,不过需要系统地学习驱动程序开发,至少也要几个月时间。
Vista x64以上版本的系统才要求一定要签名,有几家专门提供签名的组织,不用找微软,但要花钱,大约每天几钱块。
vrhero 2009-12-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 doublehappywolf 的回复:]
谢谢大家的回复,能给点具体的建议嘛?
[/Quote]
具体建议就是去找个精熟Windows底层写汇编的吧...还得去微软申请个数字签名,这个就难了,要通过微软技术中心一系列严格的检验测试,不是短期能搞定的...
波导终结者 2009-12-05
  • 打赏
  • 举报
回复
这类软件有,我们公司前段时间刚上的加密软件,叫“铁券”,公司叫大成天下,我记得超级巡警虚拟机脱壳工具也是他们出的。
软件直接接管打开、保存、复制等其他操作,存在硬盘上的文件永远是加密的,打开自动解密,保存自动加密,不是临时文件转存形式,技术非常复杂。

如果你想自己做的话,还是省省吧,最难的地方就是“接管打开和保存”,我有和他们技术支持聊过,大量的Ring0级和驱动级代码,想自己做几乎不可能。
dqw120 2009-12-05
  • 打赏
  • 举报
回复
在学习中........
dqw120 2009-12-05
  • 打赏
  • 举报
回复
吾所学之浅
Doublehappywolf 2009-12-05
  • 打赏
  • 举报
回复
谢谢大家的回复,能给点具体的建议嘛?
Doublehappywolf 2009-12-05
  • 打赏
  • 举报
回复
哈哈,在注册表的问题解决了。虽然离我初衷的问题还差很远,但是还是十分感谢回帖的朋友们!谢谢
l171147904 2009-12-05
  • 打赏
  • 举报
回复
顶。。。。
xpolice_wj 2009-12-05
  • 打赏
  • 举报
回复
学习
周公 2009-12-05
  • 打赏
  • 举报
回复
这种功能相当于在文件底层接管了,接管打开和保存,不但用C#难以实现,用C++之类也难以实现,目前好像也没有见到市面上有这类软件。
要想实现,除非你自己完全开发一个软件,能够实现对所有或者指定文件类型(看你自己的要求)的打开和关闭操作。相当于是用你自己的格式来保存文件内容。
Doublehappywolf 2009-12-05
  • 打赏
  • 举报
回复
哈哈,这个小问题解决了,是我的注册里没有hkey_classes_root\*\shell的shell,为什么没有我也不知道,于是我就自己手动建了一个shell,然后就可以运行了。那在程序里怎样判断hkey_classes_root\*下有没有shell呢?
vrhero 2009-12-05
  • 打赏
  • 举报
回复
对了...刚想起来你这功能Windows就有内置的,NTFS的EFS和Vista开始有的BitLocker都是集成的加解密功能...
vrhero 2009-12-05
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 doublehappywolf 的回复:]
运行到第二句时提醒为创建实例,就是shell是空的,该怎么修改?
[/Quote]
注册右键菜单要简单得多了,但还是有些地方要注意的...

1.从Windows2000开始注册表和NTFS文件系统一样是有权限系统控制的,对ClassesRoot这种系统级的注册项都是需要System级或管理员级写入权限的,Vista和Windows7更是加上了UAC控制...去看看MSDN中CreateSubKey两个重载方法的用法...

RegistryKey.CreateSubKey(String, RegistryKeyPermissionCheck)
RegistryKey.CreateSubKey(String, RegistryKeyPermissionCheck, RegistrySecurity)

2.不同版本Windows注册右键菜单方法也是有可能有差异的,尤其是对不同注册目标,最好去查一下SDK...如下...

HKEY_CLASSES_ROOT\*\shell
HKEY_CLASSES_ROOT\*\shellex
HKEY_CLASSES_ROOT\Folder\shell
HKEY_CLASSES_ROOT\Folder\ShellEx
HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex
HKEY_CLASSES_ROOT\Drive\shell
Doublehappywolf 2009-12-05
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 hetl_1985 的回复:]
你写了框架了?
[/Quote]
您可能还没明白我的意思!我是意思就是和解压缩软件那样,在安装后出现在系统的右键菜单中,我对哪个文件加密只要右击该文件,然后选择加密选项就可以执行我写的加密程序。
搜了一下,有这个实例但是运行有错,我把它的代码贴出来帮我看看
string menuName="解加密";
RegistryKey shell = Registry.ClassesRoot.OpenSubKey(@"*\shell", true);
RegistryKey custom = shell.CreateSubKey(menuName);
RegistryKey cmd = custom.CreateSubKey("command");
cmd.SetValue("", Application.ExecutablePath + " %1");
cmd.Close();
custom.Close();
shell.Close();
运行到第二句时提醒为创建实例,就是shell是空的,该怎么修改?
tbinjiayou 2009-12-05
  • 打赏
  • 举报
回复
帮顶……
Doublehappywolf 2009-12-05
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 skyworth98 的回复:]
自定义扩展名,并将该扩展名关联到你的程序上。
就自动用你的程序打开了,至于加解密,应该不是什么问题了吧?
[/Quote]
不是很明白你的意思!你是说对加过密的文件给特定的扩展名?然后解密时吧给扩展名去掉,还原成远文件是吧?但是如果把扩展名不小心给去掉了那文件就毁了!有什么什么特定属性来表明该文件是经过加密了?
skyworth98 2009-12-05
  • 打赏
  • 举报
回复
自定义扩展名,并将该扩展名关联到你的程序上。
就自动用你的程序打开了,至于加解密,应该不是什么问题了吧?
悔说话的哑巴 2009-12-05
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 doublehappywolf 的回复:]
谢谢各位的指点,我想我还是放弃吧!
再请教一个问题,怎样将我写的程序在安装后加载到系统的右键菜单中?
[/Quote]
你写了框架了?
加载更多回复(11)

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧