存档

‘一句话’ 分类的存档

解决HRESULT: 0x80131515 的问题

2015年12月3日 没有评论

最近工作中衣服自己洗有碰到一个调用dll的问题,错误代码是HRESULT: 0x80131515 。

后来发现是dll权限的问题,对于调用失败的dll,鼠标点击右键,属性。如果发现底部有“解除锁定”的复选框,勾选复选框,然后确定即可。

产生问题的原因是操作系统提高了安全性,二进制文件如果从网络上下载回来的话,就可能会有该标记,如果不解除直接调用的话,就会产生HRESULT: 0x80131515 错误。

分类: 一句话 标签: , ,

win10给多个桌面屏幕设置不同壁纸

2015年9月18日 没有评论

在办公环境下,衣服自己洗使用了双显示屏以方便写代码,相信各位都懂的。

我想给我的大屏幕设置一个单独的桌面壁纸,想起来应该有软件可以实现这样的要求,今天这里给大家分享一个系统内置的简单方法。

首先,把需要设置为桌面背景的图片都放到一个文件夹里,

然后可以全选所有图片,在需要设置背景的那张图片上,点击右键,选择“设置为桌面背景”,这样不同的桌面背景就可以生效了。

分类: 一句话 标签: , ,

Ubuntu 下Sox无法播放mp3音频的问题

2015年9月18日 没有评论

在衣服自己洗的香蕉派上,有安装sox去播放音频文件,最近在使用play命令播放mp3文件时,提示错误信息为:

play FAIL formats: no handler for file extension ‘mp3’

原因在于mp3解码是有版权风险的,所以使用apt-get安装sox默认是不支持的,一种解决方法是编译带参数安装sox,我觉得很麻烦,于是找到第二种方法。

sudo apt-get install libsox-fmt-mp3

这样就可以使用 play 播放了。此外,还可以使用 libsox-fmt-all 来支持尽可能多的音频格式。

分类: Banana Pi, 一句话, 日常 标签: , ,

C# 阻止系统待机和关闭显示器(一)

2015年8月24日 没有评论

最近衣服自己洗在开发过程中遇到一个需求就是在不修改电源管理选项的情况下,阻止系统进入休眠状态。和我们的需求比较类似的是视频播放器,在播放视频的时候,即使用户没有操作电脑,也会阻止休眠。退出播放器后,系统又正常了。

实现起来不太复杂,我们可以利用系统的API函数:SetThreadExecutionState

这个函数只有一个参数,可以选择3个值,当然值可以组合使用

只使用Continus参数时,则是恢复系统休眠策略。
不使用Continus参数时,实现阻止系统休眠或显示器关闭一次。
组合使用Continus参数时,实现阻止系统休眠或显示器关闭至线程终止。

C#的示例代码如下:
setThreadExecutionState

看着很简单,对不对。当然,如果不需要阻止显示器的关闭,则可以不传递 Display 参数即可。

批处理清空事件查看器日志

2015年8月12日 没有评论

Windows 的事件查看器对于开发人员来说比较有用,除了开发自己的日志系统外,还可以将一些信息的输出放到这里。

还记得若干年前的拨号上网时代,中国电信不允许路由器拨号,只能通过猫来拨号,这样就导致家庭里多个电脑无法同时上网。后来有网友发现电信拨号客户端有把真实的密码输出到事件查看器里。于是就方便了我们,虽然那时我还没有电脑,但是给亲戚朋友们破解使用还是蛮爽的事情。

当然,这里扯远了。回到我们的话题,日志虽然好,但是随着使用时间的增加,日志里的内容和分类也越来越多,对于我这样的洁癖者来说,及时清理日志就是一个比较麻烦的事情。

应用程序、安全、设置这3个还可以右键选择清空。但是对于应用程序和服务日志里的分类,只能遍历目录,耗时耗力。

今天让我找到了懒人的方法,放上来和大家一起分享。把下面的代码放到一个批处理文件里,要清理日志时,只需要以管理员权限运行即可。

@ECHO OFF
TITLE 清除所有事件查看器里看到的EventLog日志
FOR /F "delims=" %%I IN ('WEVTUTIL EL') DO (WEVTUTIL CL "%%I")
PAUSE

这样简直方便太多。

分类: 一句话, 日常 标签: , ,

c#代码创建快捷方式

2015年5月12日 没有评论

在前面的文章中,衣服自己洗分享了如何附加程序到任务栏。不过首先,你得有一个快捷方式,我们这里就来分享如何使用c#创建快捷方式。

C#里没有直接创建快捷方式的方法,衣服自己洗也在网上搜索了下,除了本文的代码外,还有利用WHO和vbs的方式,本文是使用直接代码com调用的方式,所谓萝卜白菜各有所爱,大家看着来吧。
代码比较长,总的来说,就是定义了2个结构体,一个类,一个接口,然后就是供外部调用的方法了。这里给出了关键的代码,剩余部分代码见下面的截图。

public static bool CreateShortcut(string shortcutPath, string targetPath, string workingDirectory, string description, string iconLocation = null)
{
const int SW_SHOWNORMAL = 1;
try
{
CShellLink cShellLink = new CShellLink();

IShellLink iShellLink = (IShellLink)cShellLink;
iShellLink.SetDescription(description);
iShellLink.SetShowCmd(SW_SHOWNORMAL);
iShellLink.SetPath(targetPath);
iShellLink.SetWorkingDirectory(workingDirectory);

if (!string.IsNullOrEmpty(iconLocation))
{
iShellLink.SetIconLocation(iconLocation, 0);
}

IPersistFile iPersistFile = (IPersistFile)iShellLink;
iPersistFile.Save(shortcutPath, false);

Marshal.ReleaseComObject(iPersistFile);
iPersistFile = null;
Marshal.ReleaseComObject(iShellLink);
iShellLink = null;
Marshal.ReleaseComObject(cShellLink);
cShellLink = null;

return true;
}
catch //(System.Exception ex)
{
return false;
}
}

shortcut

分类: 一句话 标签: , ,

c#获取可执行代码文件的数字签名信息

2015年5月12日 没有评论

在最近的场景中,有遇到过在运行某个程序前,先对程序进行数字签名验证。如果通过则运行,否则不运行。
数字签名技术广泛用在 exe、dll 等二进制可执行文件中,防止文件被篡改,保证了文件的唯一性。一旦文件被修改,则数字签名丢失。

C#中对获取数字签名基本信息是很简单的,微软已经帮我们封装好了,首先添加引用using System.Security.Cryptography.X509Certificates;
然后就是普通的调用:

X509Certificate cert = X509Certificate.CreateFromSignedFile(path);
var s = cert.Subject;
MessageBox.Show(s);

效果如下所示:

cert

certdlg

当然,这只是一个初步的校验,即校验是否存在数字签名。至于数字签名是否合法则需要进一步去做校验。另外,对于CreateFromSignedFile方法,如果文件没有数字签名,那么会引发异常,所以代码里应该添加对该异常的处理。

分类: 一句话 标签: , ,

Linux中访问USB摄像头

2015年3月5日 没有评论

衣服自己洗的香蕉派是基于Lubuntu的arm系统,在前几天刚完成语音合成的技术难题。今天头脑发热,就想看看视频这块。

其实在衣服自己洗的另外一个香蕉派上,已经有一个处理模块了。定时每2分钟,从局域网里的摄像头上获取图片,并上传到yeelink上。当初写这个模块是为了熟悉物联网的概念,所以视频图片并不是从本机获取的。

恰好手头上有一个几年前淘汰的USB摄像头,打算用来练练手。
首先插上USB摄像头,然后运行命令

ls /dev

如果USB摄像头被识别的话,里面应该可以看到video0。

接着查看当前的USB设备

lsusb

我这里运行结果如图所示:

lsusb如红线标记,Z-Star传说是国内比较大的山寨厂商,记录摄像头设备的硬件ID,0ac8:303b,然后访问http://mxhaard.free.fr/spca5xx.html查看spca5xx是否支持你的USB摄像头。

接下来安装camorama,

sudo apt-get install camorama

接下来,可以在远程桌面里访问这个程序,当然香蕉派系统自带的guvcview程序也是可以查看视频的。网上也有下面的方式

sudo apt-get install mplayer

sudo mplayer tv://

不过衣服自己洗用这个方式虽然可以查看视频,不过有一些错误信息。

如果各位同学的摄像头不是免驱动的话,要么就是下载对应的驱动安装,不过最快的就是换个别的型号的摄像头。

分类: 一句话, 日常 标签: , ,

Windows Server禁用SSL 3.0

2015年3月4日 没有评论

今天衣服自己洗在对网站的SSL证书续费的时候,发现网站提供了一个安全工具,顺便就用了一下,发现有个SSL 3的信息泄漏漏洞。

攻击者如何利用此漏洞?

在人为干预 (MITM) 攻击中,攻击者可能使加密的 TLS 会话降低,强制客户端使用 SSL 3.0,然后强制浏览器执行恶意代码。此代码向目标 HTTPS 网站发送许多请求,其中如果存在以前经过身份验证的会话,则会自动发送 Cookie。这是要利用此漏洞所必需的条件。攻击者然后可以截取此 HTTPS 通信,并通过利用 SSL 3.0 中 CBC 分组密码的漏洞,可以对加密通信的某些部分(例如身份验证 Cookie)进行解密。
攻击者可能利用此漏洞执行什么操作?
成功利用此漏洞的攻击者可以对加密通信的某些部分进行解密。
造成此漏洞的原因是什么?
SSL 3.0 中使用的 CBC 加密算法存在漏洞。

在windows server服务器中,基本上都使用的是IIS,而要修复该漏洞的话,需要从注册表入手。修复方式如下:

打开服务器注册表编辑器,找到路径 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols

在下面新建一个 SSL 3.0的项,然后在右边新建一个Dword 格式的键值,名称为Enabled,值为0.

重启服务器即可。

而在微软官方的文档中,Enabled 居然被翻译成中文,导致无法生效。

pod setup 失败解决

2014年12月11日 没有评论

cocoapods 是 iOS 上不错的包依赖管理软件,在前面的文章里衣服自己洗是有做简单的介绍。

苹果发布了Mac OS X 10.10 后,就安装了新系统和 XCode 6,然后顺便执行了 sudo gem update –system

然后噩梦就来了,这次要创建一个新的项目,写好 podfile 后,结果安装失败。然后网上一搜索,发现 OS X 10.10后有点问题,需要先卸载 cocoapods,然后再重新安装。各种细节和其它诸如Command Line Tools之类的就不展开说了。

安装倒是成功了,可是在执行 pod setup时,总是失败。提示 There was an error reading ‘/Users/mmcer/.cocoapods/repos/master/CocoaPods-version.yml ,然后给了一个官方的URL地址。

按照该地址访问 http://blog.cocoapods.org/Repairing-Our-Broken-Specs-Repository/,使用里面的方法删除本地文件夹

sudo rm -rf ~/.cocoapods/repo/master/
sudo setup

仍然失败,衣服自己洗以为是网络、CDN或者国家防火墙的问题,于是回家后又是各种环境,还是不行。网上是各种搜索,大家的解决方法和上面的几乎是一样的。

后来就闲逛github,在他们的 issue 里发现了居然别人也有相同的问题,并且自己摸索解决了。这里真是要汗颜下自己,没有一早想到这里不说,还懒的自己去摸索。

原因就是曾经的更新导致,具体就是 psych 这个组件,卸载然后安装一个低版本就可以了。github 里是用的2.0.0,但是我用了一个略高的版本发现也是可以的。

sudo gem uninstall psych
sudo gem install psych -v 2.0.0

帖子里还有个人是把所有的gem安装的软件都卸载了然后重装发现也可以解决问题,衣服自己洗觉得太麻烦就没有采用。

之后再重新执行 pod setup 和 pod install 都正常了。浪费了3天时间,对进度还是有很大影响的,不过这个是题外话了。

分类: iOS, 一句话, 日常 标签: , , ,