我用vb.net2015开发AutoCAD2018插件,我计划把DWG文件以二进制形式加密后存入数据库中,需要时,然后再从数据库中取出二进制数据,解密后再在内存中加载到autocad中,这个可以吗?autocad中的readdwgfile必须要有具体的磁盘文件才能使用,这就失去了保密的意义。
网友答: 感谢各位老铁的回复,没有那么复杂,只是本地的一些规划文件,面积超过一定的面积就属于涉密文件,所以才想出把规划文件放到数据库中,直接读取到autocad的想法,只要硬盘上不要留下文件就可以。上周,审查部门用他的软件在我的电脑上搜索了一下,把我的电脑翻了个底朝天,什么时候插过U盘、移动硬盘,什么时候操作什么文件,有什么秘密文件一目了然,没有什么隐私可言,感觉很恐怖,还好没有看过什么小片的。所以关于从内存中读取二进制数据到autocad,我用deepseek搜索了,倒是给我提供了很多解决方案,但都没有实现的,总之,没有实体文件,就无法读取到autocad中。除非是还需要更高级的处理方式。网友答: 本帖最后由 你有种再说一遍 于 2025-7-1 01:15 编辑
这个问题解决起来有点复杂,
方案一:
看看是否可以直接sqlite数据库存图元数据,
使用时候生成目标图元,
但是一些图元,例如OLE,动态块参数,约束参数,这些解析可能具备难度.无疑是写了一个CAD...
不解决就是最好的解决...
方案二:
如果你偏向虎山行,
1,创建虚拟磁盘,dwg放入去.
2,Minifilter防止CAD之外访问,并且防止非你插件访问.
3,插件如常进行db.readDwg(file)
4,销毁虚拟磁盘
不过这个方案需要进行驱动开发,要上C++.
方案三:
CAD自带DWG加密也不是不能用,
你db.readDwg(,,,,)有个参数填密码
方案四:
反汇编看看CAD怎么读取文件的,
不过我让别人找,没有找到,想替换一个文件指针.网友答:
把打算保存到数据库中的规划文件,用自己能读取并还原的方式保存下来,然后读取它后在DWG里边进行还原,实际上可以理解为另类的DXF,至于数据到底保存为什么样子,取决于自己通过什么方式还原它,不一定非要是二进制,纯文本也行网友答: 舍本取末
dwg实体和记录表,均可在当前dwg即时直接生成,网友答: 完全可以,不用怀疑了网友答:
要支持动态块之类的,如果自己写重新实时生成,无异于自己写个简易版的高版本CAD。网友答: 我单位已被国家相关安全部门审查,一定规模面积的DWG格式的规划文件不得出现在已联网的电脑中,所以才计划想这个办法。
网友答: 本帖最后由 d1742647821 于 2025-8-2 11:48 编辑
不可以,因为.net 读文件的api都是要fileName的,所以要先保存成文件,读完再删除,这样就留下了痕迹,除非不用dwg,储存一些图元的属性,画法规则一类的,然后读取之后根据规则画出来
网友答:
剪贴板不也是有临时DWG文件,难道复制粘贴就报警了吗网友答: 可以尝试将DWG封装在ZIP里(windows展示zip内容时是相当于将zip当成一个虚拟目录)直接从ZIP对应的虚拟目录中把DWG当块插入当前CAD,这样就不用弄虚拟磁盘驱动。网友答:
如果画的图确实比较大,那最后是怎么保存的?直接保存成一个特殊的格式?如果保存成DWG尺寸过大,是直接报警还是自动删除?
网友答: 感谢各位老铁的回复,没有那么复杂,只是本地的一些规划文件,面积超过一定的面积就属于涉密文件,所以才想出把规划文件放到数据库中,直接读取到autocad的想法,只要硬盘上不要留下文件就可以。上周,审查部门用他的软件在我的电脑上搜索了一下,把我的电脑翻了个底朝天,什么时候插过U盘、移动硬盘,什么时候操作什么文件,有什么秘密文件一目了然,没有什么隐私可言,感觉很恐怖,还好没有看过什么小片的。所以关于从内存中读取二进制数据到autocad,我用deepseek搜索了,倒是给我提供了很多解决方案,但都没有实现的,总之,没有实体文件,就无法读取到autocad中。除非是还需要更高级的处理方式。网友答: 本帖最后由 你有种再说一遍 于 2025-7-1 01:15 编辑
这个问题解决起来有点复杂,
方案一:
看看是否可以直接sqlite数据库存图元数据,
使用时候生成目标图元,
但是一些图元,例如OLE,动态块参数,约束参数,这些解析可能具备难度.无疑是写了一个CAD...
不解决就是最好的解决...
方案二:
如果你偏向虎山行,
1,创建虚拟磁盘,dwg放入去.
2,Minifilter防止CAD之外访问,并且防止非你插件访问.
3,插件如常进行db.readDwg(file)
4,销毁虚拟磁盘
不过这个方案需要进行驱动开发,要上C++.
方案三:
CAD自带DWG加密也不是不能用,
你db.readDwg(,,,,)有个参数填密码
方案四:
反汇编看看CAD怎么读取文件的,
不过我让别人找,没有找到,想替换一个文件指针.网友答:
yangmz1972 发表于 2025-7-3 08:29
感谢各位老铁的回复,没有那么复杂,只是本地的一些规划文件,面积超过一定的面积就属于涉密文件,所以才想 ...
把打算保存到数据库中的规划文件,用自己能读取并还原的方式保存下来,然后读取它后在DWG里边进行还原,实际上可以理解为另类的DXF,至于数据到底保存为什么样子,取决于自己通过什么方式还原它,不一定非要是二进制,纯文本也行网友答: 舍本取末
dwg实体和记录表,均可在当前dwg即时直接生成,网友答: 完全可以,不用怀疑了网友答:
crtrccrt 发表于 2025-6-30 18:42
舍本取末
dwg实体和记录表,均可在当前dwg即时直接生成,
要支持动态块之类的,如果自己写重新实时生成,无异于自己写个简易版的高版本CAD。网友答: 我单位已被国家相关安全部门审查,一定规模面积的DWG格式的规划文件不得出现在已联网的电脑中,所以才计划想这个办法。
网友答: 本帖最后由 d1742647821 于 2025-8-2 11:48 编辑
不可以,因为.net 读文件的api都是要fileName的,所以要先保存成文件,读完再删除,这样就留下了痕迹,除非不用dwg,储存一些图元的属性,画法规则一类的,然后读取之后根据规则画出来
网友答:
yangmz1972 发表于 2025-7-1 09:32
我单位已被国家相关安全部门审查,一定规模面积的DWG格式的规划文件不得出现在已联网的电脑中,所以才计划 ...
剪贴板不也是有临时DWG文件,难道复制粘贴就报警了吗网友答: 可以尝试将DWG封装在ZIP里(windows展示zip内容时是相当于将zip当成一个虚拟目录)直接从ZIP对应的虚拟目录中把DWG当块插入当前CAD,这样就不用弄虚拟磁盘驱动。网友答:
yangmz1972 发表于 2025-7-1 09:32
我单位已被国家相关安全部门审查,一定规模面积的DWG格式的规划文件不得出现在已联网的电脑中,所以才计划 ...
如果画的图确实比较大,那最后是怎么保存的?直接保存成一个特殊的格式?如果保存成DWG尺寸过大,是直接报警还是自动删除?