GVKun编程网logo

如何安全地保存文件到磁盘没有Windows拒绝的风险呢?(保存文件到c盘没有权限)

10

针对如何安全地保存文件到磁盘没有Windows拒绝的风险呢?和保存文件到c盘没有权限这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.net–在Windows应用商店应用中保存文件、Andr

针对如何安全地保存文件到磁盘没有Windows拒绝的风险呢?保存文件到c盘没有权限这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.net – 在Windows应用商店应用中保存文件、Android本地安全地保存密钥、ipad 没有数据线如何上传文件到局域网 windows PC 的解决方案、iText5.5.0 数据量大的时候保存文件到磁盘会出现空指针错误等相关知识,希望可以帮助到你。

本文目录一览:

如何安全地保存文件到磁盘没有Windows拒绝的风险呢?(保存文件到c盘没有权限)

如何安全地保存文件到磁盘没有Windows拒绝的风险呢?(保存文件到c盘没有权限)

我正在开发一个winform应用程序。 我想从用户(即用户提供用户名)的input,并使用该input作为文件名的一部分,并保存到文件。

如何检查用户提供的用户名是否不包含窗口的保留字符。 什么是Windows的保留字符列表?

有无论如何要求用户指定应用程序的文件夹位置?

如何恢复/降级Windows Phone 8.1应用程序到C#5,我不小心升级到C#6

如何检测系统时间是否更改? (来自.net)

用C#直接从内存中处理内存映射文件

在苹果计算机上的.Net编程

通过:

Path.GetInvalidFileNameChars()

Path.GetInvalidpathChars()

确切的列表可能是平台特定的(特别是对于单声道),它包括一些不可打印的字符…所以在这里显示他们是棘手的; p

.net – 在Windows应用商店应用中保存文件

.net – 在Windows应用商店应用中保存文件

我的程序处理用户指定的所有文件.最好将修改后的文件保留到源文件的目录中. StorageFolder.GetFolderFromPathAsync方法返回“拒绝访问”.
无法添加清单中的文件类型关联,因为处理完文件后会保留其扩展名.什么样的文件(有任何扩展名),用户选择说不可能.
发生错误的代码.

internal async static void SetFile(List<byte> byteArray,StorageFile file)
    {
        try
        {
            string path = Path.GetDirectoryName(file.Path);
            StorageFolder newFolder = await StorageFolder.GetFolderFromPathAsync(path);
            StorageFile newFile = await newFolder.CreateFileAsync(string.Format(@"crt{0}",Path.GetFileName(file.Name)),CreationCollisionoption.FailIfExists);
            Stream stream = await file.OpenStreamForWriteAsync();
            BinaryWriter writer = new BinaryWriter(stream);
            writer.Write(byteArray);
            writer.Flush();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

StorageFile文件 – 用户指定的文件.我正在尝试根据源文件的路径创建一个新文件夹.错误 – “拒绝访问”.要访问此文件夹,我必须注册我使用的文件扩展名.是不可能的.请告诉我,我们能解决这个问题吗?或者在我的案例中可以做些什么?

解决方法

据我所知,除非你继续使用保存选择器,否则你无法在PC中保存文件,如果是Windows应用商店应用.这就是为什么你可能会得到Access Denied错误.点击这里查看 File Access and Permissions.

另一方面,您可以在ApplicationData.LocalFolder中始终在专用于应用程序本身的系统位置保存文件.

您可以为应用设置其他功能,以便它可以访问可移动设备.

我不知道别人不是这些.

Android本地安全地保存密钥

Android本地安全地保存密钥

以下方法是邪门歪路,具体需要用到AndroidKeyStore来获取AES的密钥或者RSA的公钥和私鈅

Cipher,KeyGenParameterSpec

 

gradle配置 + 静态代码 + 字符串运算 + string.xml

首先将静态秘钥分为四部分:

•第一部分通过gradle配置的方式存储;

•第二部分通过java硬编码的方式存储;

•第三部分通过java字符串拼接运算的方式存储;

•第四部分通过string.xml保存;

获取appKey第一部分字符串: 
通过gradle配置的方式我们上面已经做了介绍,其就是在mudle中的gradle文件中再起buildType节点下定义字符串变量,这里需要注意的是若是有正式环境和测试环境之分,需要分别定义字符串变量,这样我们就可以通过BuildConfig获取appKay第一部分的字符串了。

/**

获取AppKey part1
*/

public static String getBK1() {

    return BuildConfig.appKey;
}

获取appKey第二部分字符串:

第二部分的appKay字符串是通过运算的出来的,这里的运算可以是任意运算方式,越复杂越好,越让人看不懂越好,当然结果需要时唯一的。比如:

public static StringBuffer getBk2() {

    StringBuffer sb = new StringBuffer();
    sb.append(Config.getGBS(2, 5));
    return sb;
}
而这里的getGBS方法的实现:

public static int getGBS(int x, int y){

    for(int i = 1; i<= x * y; i++){
        if(i % x == 0 && i % y == 0)
            return i;
    }

    return x * y;
}
最终的结果返回是:10,当然了不同的字符串需要不同的算法;

获取appKey第三部分字符串:

这里就只是使用了简单的字符串硬编码

public static String getBK3() {

return "xhxh";

}

获取appKey第四部分字符串
•在string.xml中定义appKey的第四部分

<string name="bk4">chs</string>1

•在代码中获取string中定义的字符串值

public static String getBk4() {

mContext().getResources().getString(R.string.bk4);
}

获取最终的appKey字符串:

/**

获取最终的appKey字符串
*/

public static byte[] getDefaultKey() {

    StringBuffer sb = new StringBuffer();
    sb.append(getBK1()).append(getBK2()).append(getBk3()).append(getBk4());

    return sb.toString();
}

这样经过一系列的操作之后我们就获取到了最终的静态秘钥。当然了产品中最好实现了代码混淆的功能,这样也能增大逆向的难度。

总结:

•在App端保存静态秘钥可以通过SharedPreferences、java硬编码,ndk中的so文件,文件,数据库,gradle配置的方式实现;

•为了保证秘钥的安全性可以采用多种方式混合,这样可以增加恶意反编译的难度;

•在App端保存秘钥不能真正的保证秘钥的安全性,只能增加反编译的难易程度;

•可以使用gradle配置的方式配置静态秘钥,使用string.xml配置秘钥增加逆向反编译的难度;

•不推荐使用文件,数据库的方式保存静态秘钥,容易被用户恶意删除,而出现不可预知的错误;

ipad 没有数据线如何上传文件到局域网 windows PC 的解决方案

ipad 没有数据线如何上传文件到局域网 windows PC 的解决方案

 是的,ios 的封闭性,真麻烦,不想用数据线,还不想用 iTunes ,那你找对了。

方案一: (好像只能上传文件,不能下载,能在线查看媒体。)

我的想法是在 Windows 建立一个 http file server ,只要连接到本地局域网的 ipad 可以很方便的上传文件到 windows 。

HFS-HTTP File Server 下载地址: https://www.rejetto.com/hfs/?f=dl

设置界面如下,在小屋子按右键出现菜单,选 “Add folder form disk” (从硬盘添加文件夹,即选择硬盘中的一个文件夹作为共享文件夹) ,然后设置相应属性。

程序默认是 Easy Mode (简单模式) ,点一下 “You are in Easy mode” 就会切换到 “专家模式” ,专家模式有提供更多详细的设置。请自行仔细阅读并设置。

可以设置属性。

 

在专家模式下的菜单选项中,可建立不同用户和相应的权限 (Accounts),也可以禁止某些 ip (Bans) ,局域网只有自己的话就可以忽略了,如果还有其他人的话,建议建立账号和密码,以防资料被窃取。

将链接转换成 QR Code ,用 ipad 的二维码扫描功能扫一扫打开链接,嗯,爽。(转换成 QR Code 可随便找个可以生产 QR 的网站也可以,我这边用了 chrome 的 QR Code 生成插件)

可同时传输多部 ipad ,注意无线网络配置,WiFi4-WiFi6 理论上速度都比较可以,当然 WiFi 后面的数字越大越快。

简直不要太爽。好记性不如烂笔头,新思路当然要分享。

以此类推,如果是 Linux ,当然也可以搞一个简单的网页服务器,写一个上传页面就好,暂无找到傻瓜化的东西。。。

 方案二 (可以上传和下载文件)

ipad 下载一个 Simple transfer 的软件,有免费版可以使用,局域网内可传输相片和影片到相册。

https://rambax.com/simpletransfer/ 

https://itunes.apple.com/app/apple-store/id420821506?pt=213797&ct=rambax.com&mt=8 

 

iText5.5.0 数据量大的时候保存文件到磁盘会出现空指针错误

iText5.5.0 数据量大的时候保存文件到磁盘会出现空指针错误

 程序执行Document.add(Element pdfPTable)的时候,如果pdfPTable内容小一般不会报错,一旦内容稍大,就会报空指针错误。

报错如下,哪位大神有碰到过的,求指教啊。

com.itextpdf.text.DocumentException: java.lang.NullPointerException
	at com.itextpdf.text.pdf.PdfDocument.add(PdfDocument.java:804)
	at com.itextpdf.text.Document.add(Document.java:278)
	at com.landray.kmss.qm.chart.util.concernCpl.ConcernCplDownloadController.processDownConcernPdf(ConcernCplDownloadController.java:284)
	at com.landray.kmss.qm.chart.common.actions.ConcernCplDownloadAction.downConcernPDF(ConcernCplDownloadAction.java:42)
	at sun.reflect.GeneratedMethodAccessor469.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
	at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:160)
	at com.landray.kmss.sys.config.loader.KmssStrutsRequestProcessor$2.execute(KmssStrutsRequestProcessor.java:96)
	at com.landray.kmss.third.pda.interfaces.ThirdPdaActionInterceptor.execute(ThirdPdaActionInterceptor.java:20)
	at com.landray.kmss.sys.config.loader.KmssStrutsRequestProcessor$2.execute(KmssStrutsRequestProcessor.java:99)
	at com.landray.kmss.sys.config.loader.KmssStrutsRequestProcessor.processActionPerform(KmssStrutsRequestProcessor.java:104)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:292)
	at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
	at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:79)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
	at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:143)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
	at com.landray.kmss.sys.authentication.integration.KmssProcessingFilterProxy$VirtualFilterChain.doFilter(KmssProcessingFilterProxy.java:125)
	at com.landray.kmss.third.pda.interfaces.ThirdPdaRedirectFilter.doFilter(ThirdPdaRedirectFilter.java:102)
	at com.landray.kmss.sys.authentication.integration.KmssProcessingFilterProxy$VirtualFilterChain.doFilter(KmssProcessingFilterProxy.java:128)
	at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:246)
	at com.landray.kmss.sys.authentication.integration.KmssProcessingFilterProxy$VirtualFilterChain.doFilter(KmssProcessingFilterProxy.java:128)
	at com.landray.kmss.sys.authentication.integration.KmssProcessingFilterProxy.doFilter(KmssProcessingFilterProxy.java:49)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
	at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:220)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
	at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:173)
	at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:120)
	at com.landray.kmss.web.filter.AcegiFilterToBeanProxy.doFilter(AcegiFilterToBeanProxy.java:35)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.landray.kmss.web.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:43)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
	at com.itextpdf.text.pdf.PdfPCell.<init>(PdfPCell.java:237)
	at com.itextpdf.text.pdf.PdfPRow.splitRowspans(PdfPRow.java:811)
	at com.itextpdf.text.pdf.ColumnText.goComposite(ColumnText.java:1790)
	at com.itextpdf.text.pdf.ColumnText.go(ColumnText.java:883)
	at com.itextpdf.text.pdf.ColumnText.go(ColumnText.java:878)
	at com.itextpdf.text.pdf.ColumnText.go(ColumnText.java:867)
	at com.itextpdf.text.pdf.PdfDocument.addPTable(PdfDocument.java:2622)
	at com.itextpdf.text.pdf.PdfDocument.add(PdfDocument.java:745)
	... 56 more



关于如何安全地保存文件到磁盘没有Windows拒绝的风险呢?保存文件到c盘没有权限的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于.net – 在Windows应用商店应用中保存文件、Android本地安全地保存密钥、ipad 没有数据线如何上传文件到局域网 windows PC 的解决方案、iText5.5.0 数据量大的时候保存文件到磁盘会出现空指针错误的相关信息,请在本站寻找。

本文标签: