免费图片分享外链地址(图床)

背景

我们经常可能要贴一些图片,如果自己没有服务器或者服务器流量又比较少,这个时候我们可以用免费提供图片图床服务

  • 路过图床(https://imgchr.com/), 目前自己使用没有发现特别问题,同时提供Html和markdown代码,自己直接复制即可,用户体验还不错
  • 聚合图床(https://www.superbed.cn/),这个目前自己还没有用过
  • 获取新浪短连接简单方法(非API)

    目前新浪短链接的API无法使用,因为新浪直接已经下架了API,那么之前网上直接调用新浪的方案都没有用了,我猜测原因大概是用的人太多,对新浪又没有什么收益,反而会影响
    新浪微博的短链接使用,于是直接下线了,但我们经常也还是会用到短连接,那么网上能用基本都是收费的,免费能用几次,自己还担心他们加了跳转,于是有了这篇文章

    新浪短连接解决方法详解

  • 登录新浪微博
  • 发布一条微博仅仅对自己可见
  • 发布的结果里面含有网页链接,直接复制即可
  • 网上提供收费估计类似的方案实现,因为只有使用官网的方式才会稳定,因为操作是非常简单的,所以我就不截图了,之前用python写了一套可以生成短链接了,后面新浪改了规则,现在用不了了,有时间看能不能自己写一套自己用

    微信快速登录工具开源下载

    功能

    快速切换已经登录过的微信,如果没有登录过是没有快速切换

    效果图

    下载地址

    百度网盘(提取:htir)

    源码

    https://github.com/xvsdf100/WxQuickLoginTool

    原理

    字节解析:

    第一字节代表类型,第二字代表大小(可能用2个字节表示),第三个字节代表KEY(如果size用2个字节,那么Key就变成第4个字节),基本逻辑就是这么简单,自己用二进制工具看,结合逻辑,然后稍微分析大概就能得出来。

    微信切换逻辑

    • 先找到微信通用配置目录,通过在公共目录%USERPROFILE%\AppData\Roaming\Tencent\WeChat\All Users\config\3ebffe94.ini
    • 获取到微信配置目录,然后读取公共配置
    • 修改公共配置当前登陆过微信就可以快速登录

    c# md5 在某些电脑报错

    此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。我们能从网上能找到基本是这个错误,一个c# 系统API竟然会报错,然后根据网上修改APP.config关闭FIP算法是无效,不用再试了。然后修改注册表:

    在window中打开功能里输入regedit,回车打开注册器。然后进入如下路径中

     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy   将enable设置为0 即可。

    修改之后要重新启动电脑。

    虽然上面这个可以解决问题,但用户电脑不可能要用户修改,后面通过从github找一个份MD5 实现代码来替换系统API的MD5,写这篇文章的意思,大家还是不要用c# md5,如果别人电脑开启fips就报异常,虽然这个配置默认关闭的,但可能个别用户是打开的。

    网址爆红怎么恢复

    自己以前买了一个域名,后来各种原因360和qq报红,我后来就没有用那个网址了,直接放在那里,自己想重新拿来用。于是我直接qq和360申请,竟然直接通过了,看来也没有网上说那么难,需要交钱才可以恢复。

    网址情况说明

    我那个网址放了2年,基本什么内容都没有指,直接申请,内容就是简单正常网站,没有任何违规内容。

    百度301跳转报可能被黑客恶意修改

    因为最近自己更换了域名,通过301跳转到新的域名上面,这样子不会影响搜索引擎以前收录,结果我操作了一下,然后搜索关键词提示原来的网址报恶意修改,google搜索引擎已经替换新的域名了,这样子我只能申请恢复,还好百度反馈很快,申请一会就收到通过审核,过几个小时搜索引擎就恢复正常!

    原因

    • 国内环境太差。好多网站安全意识太差,导致很多网站被恶意篡改掉了。所以百度搜索引擎对30x跳转比较敏感,不过这样子对一些真正需要跳转的网站不是那么好,貌似也会突然降低网站的权重。
    • 301跳转的网址部分没有改成新的,导致百度被恶意修改了,因为之前后台写的绝对地址,没有写相对地址,我觉得百度可以加一个内容比对,如果跳转的地址,内容没有发送特别变化,不应该出现提示,这个地方我认为可以稍微优化一下。

    window远程桌面小技巧

    远程桌面快速访问

    我们可能多台服务器需要远程访问,但我们很少能记住IP地址,那么我可以通过远程的桌面配置另存为放在桌面,直接进行访问即可,这样子我们就可以知道哪个是访问、

    图片示例

    打开远程桌面,另存为
    我桌面用的QQ桌面整理独立版本,挺方便,可以建立各种个字

    这样子我们不用使用第三方软件,就可以很方便整理了。

    远程桌面版本小技巧

    服务器版本越高,远程用户体验越好,我之前用win7发现卡卡的,然后切换成2012发现速度会流畅很多,这是因为新版肯定加很多代码进行优化

    c# wpf webview 屏蔽右键方法1

    代码(直接copy)

     public class WebBrowserHostUIHandler : Native.IDocHostUIHandler
        {
            private const uint E_NOTIMPL = 0x80004001;
            private const uint S_OK = 0;
            private const uint S_FALSE = 1;
    
            public WebBrowserHostUIHandler(WebBrowser browser)
            {
                if (browser == null)
                    throw new ArgumentNullException("browser");
    
                Browser = browser;
                browser.LoadCompleted += OnLoadCompleted;
                browser.Navigated += OnNavigated;
                IsWebBrowserContextMenuEnabled = true;
                Flags |= HostUIFlags.ENABLE_REDIRECT_NOTIFICATION;
            }
    
            public WebBrowser Browser { get; private set; }
            public HostUIFlags Flags { get; set; }
            public bool IsWebBrowserContextMenuEnabled { get; set; }
            public bool ScriptErrorsSuppressed { get; set; }
    
            private void OnNavigated(object sender, NavigationEventArgs e)
            {
                SetSilent(Browser, ScriptErrorsSuppressed);
            }
    
            private void OnLoadCompleted(object sender, NavigationEventArgs e)
            {
                Native.ICustomDoc doc = Browser.Document as Native.ICustomDoc;
                if (doc != null)
                {
                    doc.SetUIHandler(this);
                }
            }
    
            uint Native.IDocHostUIHandler.ShowContextMenu(int dwID, Native.POINT pt, object pcmdtReserved, object pdispReserved)
            {
                return IsWebBrowserContextMenuEnabled ? S_FALSE : S_OK;
            }
    
            uint Native.IDocHostUIHandler.GetHostInfo(ref Native.DOCHOSTUIINFO info)
            {
                info.dwFlags = (int)Flags;
                info.dwDoubleClick = 0;
                return S_OK;
            }
    
            uint Native.IDocHostUIHandler.ShowUI(int dwID, object activeObject, object commandTarget, object frame, object doc)
            {
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.HideUI()
            {
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.UpdateUI()
            {
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.EnableModeless(bool fEnable)
            {
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.OnDocWindowActivate(bool fActivate)
            {
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.OnFrameWindowActivate(bool fActivate)
            {
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.ResizeBorder(Native.COMRECT rect, object doc, bool fFrameWindow)
            {
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.TranslateAccelerator(ref System.Windows.Forms.Message msg, ref Guid group, int nCmdID)
            {
                return S_FALSE;
            }
    
            uint Native.IDocHostUIHandler.GetOptionKeyPath(string[] pbstrKey, int dw)
            {
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.GetDropTarget(object pDropTarget, out object ppDropTarget)
            {
                ppDropTarget = null;
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.GetExternal(out object ppDispatch)
            {
                ppDispatch = Browser.ObjectForScripting;
                return S_OK;
            }
    
            uint Native.IDocHostUIHandler.TranslateUrl(int dwTranslate, string strURLIn, out string pstrURLOut)
            {
                pstrURLOut = null;
                return E_NOTIMPL;
            }
    
            uint Native.IDocHostUIHandler.FilterDataObject(IDataObject pDO, out IDataObject ppDORet)
            {
                ppDORet = null;
                return E_NOTIMPL;
            }
    
            public static void SetSilent(WebBrowser browser, bool silent)
            {
                Native.IOleServiceProvider sp = browser.Document as Native.IOleServiceProvider;
                if (sp != null)
                {
                    Guid IID_IWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");
                    Guid IID_IWebBrowser2 = new Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E");
    
                    object webBrowser;
                    sp.QueryService(ref IID_IWebBrowserApp, ref IID_IWebBrowser2, out webBrowser);
                    if (webBrowser != null)
                    {
                        webBrowser.GetType().InvokeMember("Silent", BindingFlags.Instance | BindingFlags.Public | BindingFlags.PutDispProperty, null, webBrowser, new object[] { silent });
                    }
                }
            }
        }
    
        internal static class Native
        {
            [ComImport, Guid("BD3F23C0-D43E-11CF-893B-00AA00BDCE1A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
            internal interface IDocHostUIHandler
            {
                [PreserveSig]
                uint ShowContextMenu(int dwID, POINT pt, [MarshalAs(UnmanagedType.Interface)] object pcmdtReserved, [MarshalAs(UnmanagedType.Interface)] object pdispReserved);
    
                [PreserveSig]
                uint GetHostInfo(ref DOCHOSTUIINFO info);
    
                [PreserveSig]
                uint ShowUI(int dwID, [MarshalAs(UnmanagedType.Interface)] object activeObject, [MarshalAs(UnmanagedType.Interface)] object commandTarget, [MarshalAs(UnmanagedType.Interface)] object frame, [MarshalAs(UnmanagedType.Interface)] object doc);
    
                [PreserveSig]
                uint HideUI();
    
                [PreserveSig]
                uint UpdateUI();
    
                [PreserveSig]
                uint EnableModeless(bool fEnable);
    
                [PreserveSig]
                uint OnDocWindowActivate(bool fActivate);
    
                [PreserveSig]
                uint OnFrameWindowActivate(bool fActivate);
    
                [PreserveSig]
                uint ResizeBorder(COMRECT rect, [MarshalAs(UnmanagedType.Interface)] object doc, bool fFrameWindow);
    
                [PreserveSig]
                uint TranslateAccelerator(ref System.Windows.Forms.Message msg, ref Guid group, int nCmdID);
    
                [PreserveSig]
                uint GetOptionKeyPath([Out, MarshalAs(UnmanagedType.LPArray)] string[] pbstrKey, int dw);
    
                [PreserveSig]
                uint GetDropTarget([In, MarshalAs(UnmanagedType.Interface)] object pDropTarget, [MarshalAs(UnmanagedType.Interface)] out object ppDropTarget);
    
                [PreserveSig]
                uint GetExternal([MarshalAs(UnmanagedType.IDispatch)] out object ppDispatch);
    
                [PreserveSig]
                uint TranslateUrl(int dwTranslate, [MarshalAs(UnmanagedType.LPWStr)] string strURLIn, [MarshalAs(UnmanagedType.LPWStr)] out string pstrURLOut);
    
                [PreserveSig]
                uint FilterDataObject(IDataObject pDO, out IDataObject ppDORet);
            }
    
            [StructLayout(LayoutKind.Sequential)]
            internal struct DOCHOSTUIINFO
            {
                public int cbSize;
                public int dwFlags;
                public int dwDoubleClick;
                public IntPtr dwReserved1;
                public IntPtr dwReserved2;
            }
    
            [StructLayout(LayoutKind.Sequential)]
            internal struct COMRECT
            {
                public int left;
                public int top;
                public int right;
                public int bottom;
            }
    
            [StructLayout(LayoutKind.Sequential)]
            internal class POINT
            {
                public int x;
                public int y;
            }
    
            [ComImport, Guid("3050F3F0-98B5-11CF-BB82-00AA00BDCE0B"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
            internal interface ICustomDoc
            {
                [PreserveSig]
                int SetUIHandler(IDocHostUIHandler pUIHandler);
            }
    
            [ComImport, Guid("6D5140C1-7436-11CE-8034-00AA006009FA"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
            internal interface IOleServiceProvider
            {
                [PreserveSig]
                uint QueryService([In] ref Guid guidService, [In] ref Guid riid, [MarshalAs(UnmanagedType.IDispatch)] out object ppvObject);
            }
        }
    
        [Flags]
        public enum HostUIFlags
        {
            DIALOG = 0x00000001,
            DISABLE_HELP_MENU = 0x00000002,
            NO3DBORDER = 0x00000004,
            SCROLL_NO = 0x00000008,
            DISABLE_SCRIPT_INACTIVE = 0x00000010,
            OPENNEWWIN = 0x00000020,
            DISABLE_OFFSCREEN = 0x00000040,
            FLAT_SCROLLBAR = 0x00000080,
            DIV_BLOCKDEFAULT = 0x00000100,
            ACTIVATE_CLIENTHIT_ONLY = 0x00000200,
            OVERRIDEBEHAVIORFACTORY = 0x00000400,
            CODEPAGELINKEDFONTS = 0x00000800,
            URL_ENCODING_DISABLE_UTF8 = 0x00001000,
            URL_ENCODING_ENABLE_UTF8 = 0x00002000,
            ENABLE_FORMS_AUTOCOMPLETE = 0x00004000,
            ENABLE_INPLACE_NAVIGATION = 0x00010000,
            IME_ENABLE_RECONVERSION = 0x00020000,
            THEME = 0x00040000,
            NOTHEME = 0x00080000,
            NOPICS = 0x00100000,
            NO3DOUTERBORDER = 0x00200000,
            DISABLE_EDIT_NS_FIXUP = 0x00400000,
            LOCAL_MACHINE_ACCESS_CHECK = 0x00800000,
            DISABLE_UNTRUSTEDPROTOCOL = 0x01000000,
            HOST_NAVIGATES = 0x02000000,
            ENABLE_REDIRECT_NOTIFICATION = 0x04000000,
            USE_WINDOWLESS_SELECTCONTROL = 0x08000000,
            USE_WINDOWED_SELECTCONTROL = 0x10000000,
            ENABLE_ACTIVEX_INACTIVATE_MODE = 0x20000000,
            DPI_AWARE = 0x40000000
        }
    

    怎么使用?

    private WebBrowserHostUIHandler _wbHandler;

    _wbHandler = new WebBrowserHostUIHandler(WebViewControl);

    WebViewControl就是对应的WebView类名,c++ 也有类似方法。其实不用太关心代码细节,这个都是com接口,微软有一些文档介绍,我记得以前我用c++找到过,写过类似的代码,这份代码是从老外那里直接复制,这样子就不需要用winform webview了。后面我会介绍用js的方法屏蔽右键

    inno setup 卸载程序报毒

    我从网上下载了一个汉化版本,发现安装包安装后卸载程序会报毒,不知道为什么,于是我直接找到inno setup官网下载重新打包就不会报毒了.

    中文包问题

    下载官网版本不带中文简体,那么从官网下载语言包,然后放在目录,同时脚本也要指向这个语言包

    语言包下载地址(百度网盘;提取码5wcp),因为官网有的时候打不开,你下载直接放在C:\Program Files (x86)\Inno Setup 6\Languages的目录

    脚本填写下面即可,上面是我安装目录,你自己对应修改即可

    [Languages]
    Name: "ChineseSimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"