win10给多个桌面屏幕设置不同壁纸
在办公环境下,衣服自己洗使用了双显示屏以方便写代码,相信各位都懂的。
我想给我的大屏幕设置一个单独的桌面壁纸,想起来应该有软件可以实现这样的要求,今天这里给大家分享一个系统内置的简单方法。
首先,把需要设置为桌面背景的图片都放到一个文件夹里,
然后可以全选所有图片,在需要设置背景的那张图片上,点击右键,选择“设置为桌面背景”,这样不同的桌面背景就可以生效了。
在办公环境下,衣服自己洗使用了双显示屏以方便写代码,相信各位都懂的。
我想给我的大屏幕设置一个单独的桌面壁纸,想起来应该有软件可以实现这样的要求,今天这里给大家分享一个系统内置的简单方法。
首先,把需要设置为桌面背景的图片都放到一个文件夹里,
然后可以全选所有图片,在需要设置背景的那张图片上,点击右键,选择“设置为桌面背景”,这样不同的桌面背景就可以生效了。
在衣服自己洗的香蕉派上,有安装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 来支持尽可能多的音频格式。
最近衣服自己洗在开发过程中遇到一个需求就是在不修改电源管理选项的情况下,阻止系统进入休眠状态。和我们的需求比较类似的是视频播放器,在播放视频的时候,即使用户没有操作电脑,也会阻止休眠。退出播放器后,系统又正常了。
实现起来不太复杂,我们可以利用系统的API函数:SetThreadExecutionState
这个函数只有一个参数,可以选择3个值,当然值可以组合使用
只使用Continus参数时,则是恢复系统休眠策略。
不使用Continus参数时,实现阻止系统休眠或显示器关闭一次。
组合使用Continus参数时,实现阻止系统休眠或显示器关闭至线程终止。
看着很简单,对不对。当然,如果不需要阻止显示器的关闭,则可以不传递 Display 参数即可。
Windows 的事件查看器对于开发人员来说比较有用,除了开发自己的日志系统外,还可以将一些信息的输出放到这里。
还记得若干年前的拨号上网时代,中国电信不允许路由器拨号,只能通过猫来拨号,这样就导致家庭里多个电脑无法同时上网。后来有网友发现电信拨号客户端有把真实的密码输出到事件查看器里。于是就方便了我们,虽然那时我还没有电脑,但是给亲戚朋友们破解使用还是蛮爽的事情。
当然,这里扯远了。回到我们的话题,日志虽然好,但是随着使用时间的增加,日志里的内容和分类也越来越多,对于我这样的洁癖者来说,及时清理日志就是一个比较麻烦的事情。
应用程序、安全、设置这3个还可以右键选择清空。但是对于应用程序和服务日志里的分类,只能遍历目录,耗时耗力。
今天让我找到了懒人的方法,放上来和大家一起分享。把下面的代码放到一个批处理文件里,要清理日志时,只需要以管理员权限运行即可。
@ECHO OFF
TITLE 清除所有事件查看器里看到的EventLog日志
FOR /F "delims=" %%I IN ('WEVTUTIL EL') DO (WEVTUTIL CL "%%I")
PAUSE
这样简直方便太多。
在前面的文章中,衣服自己洗分享了如何附加程序到任务栏。不过首先,你得有一个快捷方式,我们这里就来分享如何使用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;
}
}
在最近的场景中,有遇到过在运行某个程序前,先对程序进行数字签名验证。如果通过则运行,否则不运行。
数字签名技术广泛用在 exe、dll 等二进制可执行文件中,防止文件被篡改,保证了文件的唯一性。一旦文件被修改,则数字签名丢失。
C#中对获取数字签名基本信息是很简单的,微软已经帮我们封装好了,首先添加引用using System.Security.Cryptography.X509Certificates;
然后就是普通的调用:
X509Certificate cert = X509Certificate.CreateFromSignedFile(path);
var s = cert.Subject;
MessageBox.Show(s);
效果如下所示:
当然,这只是一个初步的校验,即校验是否存在数字签名。至于数字签名是否合法则需要进一步去做校验。另外,对于CreateFromSignedFile方法,如果文件没有数字签名,那么会引发异常,所以代码里应该添加对该异常的处理。
衣服自己洗的香蕉派是基于Lubuntu的arm系统,在前几天刚完成语音合成的技术难题。今天头脑发热,就想看看视频这块。
其实在衣服自己洗的另外一个香蕉派上,已经有一个处理模块了。定时每2分钟,从局域网里的摄像头上获取图片,并上传到yeelink上。当初写这个模块是为了熟悉物联网的概念,所以视频图片并不是从本机获取的。
恰好手头上有一个几年前淘汰的USB摄像头,打算用来练练手。
首先插上USB摄像头,然后运行命令
ls /dev
如果USB摄像头被识别的话,里面应该可以看到video0。
接着查看当前的USB设备
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://
不过衣服自己洗用这个方式虽然可以查看视频,不过有一些错误信息。
如果各位同学的摄像头不是免驱动的话,要么就是下载对应的驱动安装,不过最快的就是换个别的型号的摄像头。
今天衣服自己洗在对网站的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 居然被翻译成中文,导致无法生效。
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天时间,对进度还是有很大影响的,不过这个是题外话了。
最近微软发布了Visual Studio 2015 Preview 版本,网络上对于跨平台支持是各种赞美。衣服自己洗就琢磨着要不也先下载用用看。恰好有看关于Hyper-V的文章,就顺便用这个了,VMWare 的东西就懒得下载了,于是就走上了不归路。
当初就是因为我的Y450的CPU不支持虚拟化,用不了Hyper-V,所以才换用现在的Y510P。
新建了win7的虚拟机,一路畅通,然后启动虚拟机,直接就报错,提示虚拟机无法初始化。我记得当初刚装完系统时,Hyper-V是可以用的,不知道是不是我中间做系统优化修改了什么,导致现在出错。而且也没有更具体的信息可以参考。
网上是各种搜索,有很多人也和我是一样的问题,但几乎是千篇一律的答复,请检查BIOS是否开启了虚拟化操作等等。我确认我的i7的CPU是支持的,不甘心,只好打开装*外挂,搜索到了更详细的信息,而且有解决方法,但是他们是Windows Server 2008,对此的解决方案就是升级到 SP1。微软也给出了补丁,估计这个补丁最后也收录在 SP1里了。在微软的文档里提到这个问题,出错后会在事件查看器里Microsoft\Windows\Hyper-V Worker 下生成事件ID为3040的错误信息。
但是,我的机器是win8.1,不是Windows Server 2008,抱着试一试的想法,把微软的那个补丁下载回来安装,提示签名不正确,看来不能这么用。
Hyper-V Worker、3040,这已经是一个很好的提示了,于是拿这个信息重新搜索,再选择和Win8.1系统有关,没有多少收获。
白天晚上都时不时搜索一把,代码都没有怎么写,就酱紫一周时间过去了。
对于虚拟的win7而言,其实大可不必非得坚持用Hyper-V,但是对于 Windows Phone的程序,模拟器也无法初始化,这就是个大问题了。
昨天就在衣服自己洗很是崩溃的时候,突然在网上发现了一个帖子,并最终解决了问题。
以管理员权限在命令行里执行 net Localgroup administrators SERVICE /delete
然后重启电脑,重启后win7虚拟机倒是正常了,但是Windows Phone 模拟器还是不行,重新修复了下VS,一切都看起来OK。
刚才的命令是从管理员用户组里删除 Service 用户,虽然很奇怪为什么要这么做,可删除后确实就有效果了,原文帖子里大家也是一样的疑惑。再次在事件查看器里看到到对应的事件所有者是System了,而不是原来的NT Virtual Machine。
希望对大家有用,以上。