当前位置:首页 > C#编程 > C#/.net框架 > 正文内容

关于.appref-ms文件后缀名(clickonce技术)

Jorge2年前 (2022-05-09)C#/.net框架816

 

起因

image.png

image.png

先是看到git shell指向的是一个appref-ms文件。
找开目录,它未显示文件后缀名,显示的是一个叫application reference 的文件类型。
从来有见过这种类型,于是查了查

调查

它是一个叫clickonce技术的文件。

C#
ClickOnce是微软公司开发的一门用于在网络上发布应用程序的技术
ClickOnce使得用户可以从支持ClickOnce的网页中点击一个链接来运行一个程序。
ClickOnce的设计目标是使得应用程序的启动和升级更加容易。

ClickOnce的安装是把文件复制到用户的配置文件下,所以不需要管理员权限,对系统的影响也比较小。.Net对ClickOnce程序采取的安全策略是基于启动位置,在默认的安全设置下,
从Internet启动的程序较从本地启动的程序拥有较少的权限。

ClickOnce程序可以从程序的更新位置检查是否有更新版本,并且提示用户下载和安装新的版本。


参考:ClickOnce


如何找到appref-ms的目标exe文件:


The appref-ms file does not point to the exe. When you hit that shortcut, it invokes the deployment manifest at the deployment provider url and checks for updates. It checks the application manifest (yourapp.exe.manifest) to see what files to download, and this file contains the definition of the entry point (i.e. the exe).


.appref-ms不会指向exe文件。当我们点击.appref-ms文件时,会根据部署的url去启动部署文件(这个文件是服务端发布的assembly name.application文件?),然后检查部署文件是否有文件需要更新,这个部署文件也包含了exe文件的入口定义。


这个文件可以直接拖到文本编辑器中,主要由以下部分组成:

http://服务端发布地址/assembly name.application#assembly name.application, 

Culture=neutral(是否一定是这个值不知道), 

PublicKeyToken=xxxxxxxxxxxxxxxx

(一个解决方案产生的id,解决安全问题,确保该文件只能由作者修改,作者掌握私匙,并且颁布后没有被其他人篡改,作为公匙,和服务端进行验证,与证书挂钩,如果证书不改变token不改变), 

processorArchitecture=cpu架构


使用clickonce部署怎么确保不被反编译


winform使用clickonce部署,所有的资源文件包括exe程序都下载到客户端,那客户端直接可以反编译了,有没有很安全的解决办法?

ClickOnce安装的程序的一般情况下都会放在这

C\Documents and Settings\<username>\Local Settings\Apps\2.0

另外,也可以用WMI辅助得到进程的详细信息,运行WMIC即可弹出WMI的CommandLine对话框,找到你的进程的ID(如45),然后输入process 45,即可得到该进程的详细信息,包括进程所在路径


image.png

答案是,clickonce技术并不是解决反编译问题的一门技术,如果担心反编译,请考虑混淆或者商业加密。


--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!

 


扫描二维码推送至手机访问。

版权声明:本文由7点博客发布,如需转载请注明出处。

本文链接:http://6dot.cn/?id=100

标签: .NET.NET框架
分享给朋友:

“关于.appref-ms文件后缀名(clickonce技术)” 的相关文章

C# 控件闪烁问题的解决

C# 控件闪烁问题的解决

说一下解决C#下控件闪烁的几个问题,如下:  listview和datagridview显示数据闪烁 自定义控件的显示闪烁listbox滚动条拖动闪烁面板中控件过多的闪烁propertyGrid点击和修改项目缓慢的问题richtextbox控件的刷新显示问题此类问题对于界面复杂规...

C#的propertygrid控件,选择和修改项目时很慢

C#的propertygrid控件,选择和修改项目时很慢

C#的propertygrid控件是很强。可以实现类似Vitual Studio属性面板那样的效果。但是。。。。我们一直痛苦它在选择和修改项目的时候很慢。我的用法是使用控件的SelectObject来绑定数据。C# PgridMotionSpeed.SelectedObject ...

C# Modelbus crc16计算校验和程序

C# Modelbus crc16计算校验和程序

我们手里一个无刷电机,采用485的modelbus crc16协议来控制。因此需要一个计算校验和的工具。源码:C#using System;using System.Collections.Generic;using System.ComponentModel;usin...

C# tableLayoutPanel动态加载控件闪烁的解决方案

C# tableLayoutPanel动态加载控件闪烁的解决方案

WinForm加载多个自定义控件时,会出现很严重的闪烁问题,很卡,一块一块的加载(像打开网页时,网络很卡的那种感觉)简直没法忍受。在网上搜索了好久,网上大部分的方法是一下4种,但是都不能有效的解决问题。  1.将DoubleBuffered 设置 true,用双缓存处理Form界面内容加载,可以提高...

C# 异步和等待,async/await

C# 异步和等待,async/await

 首先,重点是:异步将从根本上改变大多数代码的编写方式。是的,我相信 async/await 会比 LINQ 产生更大的影响。理解异步将在短短几年内成为基本必需品。关键字介绍让我们直接开始吧。我将使用一些稍后将阐述的概念——请继续阅读第一部分。异步方法看起来像这样:public ...

.NET(C#) TPL:Task中未觉察异常和TaskScheduler.UnobservedTaskException事件

.NET(C#) TPL:Task中未觉察异常和TaskScheduler.UnobservedTaskException事件

当你在一个Task执行中抛出异常,比如:C#Task.Factory.StartNew(() =>{    throw new Exception();});运行该方法,没有任何异常抛出。事实上此时Task的异常处于未觉察状...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。