金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 编程 > 程序实现软件开机自动启动的两种常用方法,的

程序实现软件开机自动启动的两种常用方法,的

发布时间:2019-11-02 08:48编辑:编程浏览(87)

    图片 1

    public static string Hash2(string uin, string ptvfwebqq)
    {
    int[] ptbIndex = new int[4];
    long QQ_Long = long.Parse(uin);
    for (int i = 0; i < ptvfwebqq.Length; i++)
    {
    ptbIndex[i % 4] ^= ptvfwebqq.ToCharArray()[i];
    }
    string[] salt = { "EC", "OK" };
    long[] uinByte = new long[4];
    uinByte[0] = QQ_Long >> 24 & 255 ^ salt[0].ToCharArray()[0];
    uinByte[1] = QQ_Long >> 16 & 255 ^ salt[0].ToCharArray()[1];
    uinByte[2] = QQ_Long >> 8 & 255 ^ salt[1].ToCharArray()[0];
    uinByte[3] = QQ_Long & 255 ^ salt[1].ToCharArray()[1];

    2.代码实现-只需要调用SetMeStart(bool onOff)方法就可以了,参数onOff表示自启开关

         64位:

    Login_Psessionid = dat.Replace(":", ",").Replace("{", "").Replace("}", "").Replace(""", "").Split(',')[10];
    Login_QQ = dat.Replace(":", ",").Replace("{", "").Replace("}", "").Replace(""", "").Split(',')[14];//登录QQ
    //Login_Vfwebqq = dat.Replace(":", ",").Replace("{", "").Replace("}", "").Replace(""", "").Split(',')[18];
    Login_Hash = Hash2(Login_QQ, Login_ptwebqq);// 在这个js 拿到那个hash的值 JS里面的方法名是Hash2 里面是16进制 需要转换成C#的类型。第一个参数是真实QQ第二个ptwebqq
    //一开始拿上面的cookie 里面的Vfwebqq,是不行的,再请求一遍,拿到获取好友信息的vfwebqq
    string urlvfwebqq = "", Login_ptwebqq).Replace("#{t}", TimeStamp());
    string datVfwebqq = HTTP.Get(urlvfwebqq, "");
    Login_Vfwebqq = datVfwebqq.Split('"')[7];
    SendOnlog(Login_QQ +"/r/n"+ Login_Vfwebqq + "/r/n" + Login_Psessionid

    方法一:将软件的快捷方式创建到计算机的自动启动目录下(不需要管理员权限)

     

     

    转载:

    真觉得自己的知识面还是比较窄,在此之前,居然还不知道SqlLocalDb。

    public static void Login_GetPHV()
    {
    string urldata = "{"ptwebqq":"#{ptwebqq}","clientid":53999199,"psessionid":"","status":"online"}".Replace("#{ptwebqq}", Login_ptwebqq);
    urldata = "r=" + HttpUtility.UrlEncode(urldata);
    string dat = HTTP.Post("", urldata, "");

            /// <summary>
            /// 快捷方式名称-任意自定义
            /// </summary>
            private const string QuickName = "TCNVMClient";
    
            /// <summary>
            /// 自动获取系统自动启动目录
            /// </summary>
            private string systemStartPath { get { return Environment.GetFolderPath(Environment.SpecialFolder.Startup); } }
    
            /// <summary>
            /// 自动获取程序完整路径
            /// </summary>
            private string appAllPath { get { return Process.GetCurrentProcess().MainModule.FileName; } }
    
            /// <summary>
            /// 自动获取桌面目录
            /// </summary>
            private string desktopPath { get { return Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); } }
    
            /// <summary>
            /// 设置开机自动启动-只需要调用改方法就可以了参数里面的bool变量是控制开机启动的开关的,默认为开启自启启动
            /// </summary>
            /// <param name="onOff">自启开关</param>
            public void SetMeAutoStart(bool onOff = true)
            {
                if (onOff)//开机启动
                {
                    //获取启动路径应用程序快捷方式的路径集合
                    List<string> shortcutPaths = GetQuickFromFolder(systemStartPath, appAllPath);
                    //存在2个以快捷方式则保留一个快捷方式-避免重复多于
                    if (shortcutPaths.Count >= 2)
                    {
                        for (int i = 1; i < shortcutPaths.Count; i++)
                        {
                            DeleteFile(shortcutPaths[i]);
                        }
                    }
                    else if (shortcutPaths.Count < 1)//不存在则创建快捷方式
                    {
                        CreateShortcut(systemStartPath, QuickName, appAllPath, "中吉售货机");
                    }
                }
                else//开机不启动
                {
                    //获取启动路径应用程序快捷方式的路径集合
                    List<string> shortcutPaths = GetQuickFromFolder(systemStartPath, appAllPath);
                    //存在快捷方式则遍历全部删除
                    if (shortcutPaths.Count > 0)
                    {
                        for (int i = 0; i < shortcutPaths.Count; i++)
                        {
                            DeleteFile(shortcutPaths[i]);
                        }
                    }
                }
                //创建桌面快捷方式-如果需要可以取消注释
                //CreateDesktopQuick(desktopPath, QuickName, appAllPath);
            }
    
            /// <summary>
            ///  向目标路径创建指定文件的快捷方式
            /// </summary>
            /// <param name="directory">目标目录</param>
            /// <param name="shortcutName">快捷方式名字</param>
            /// <param name="targetPath">文件完全路径</param>
            /// <param name="description">描述</param>
            /// <param name="iconLocation">图标地址</param>
            /// <returns>成功或失败</returns>
            private bool CreateShortcut(string directory, string shortcutName, string targetPath, string description = null, string iconLocation = null)
            {
                try
                {
                    if (!Directory.Exists(directory)) Directory.CreateDirectory(directory);                         //目录不存在则创建
                    //添加引用 Com 中搜索 Windows Script Host Object Model
                    string shortcutPath = Path.Combine(directory, string.Format("{0}.lnk", shortcutName));          //合成路径
                    WshShell shell = new IWshRuntimeLibrary.WshShell();
                    IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(shortcutPath);    //创建快捷方式对象
                    shortcut.TargetPath = targetPath;                                                               //指定目标路径
                    shortcut.WorkingDirectory = Path.GetDirectoryName(targetPath);                                  //设置起始位置
                    shortcut.WindowStyle = 1;                                                                       //设置运行方式,默认为常规窗口
                    shortcut.Description = description;                                                             //设置备注
                    shortcut.IconLocation = string.IsNullOrWhiteSpace(iconLocation) ? targetPath : iconLocation;    //设置图标路径
                    shortcut.Save();                                                                                //保存快捷方式
                    return true;
                }
                catch(Exception ex)
                {
                    string temp = ex.Message;
                    temp = "";
                }
                return false;
            }
    
            /// <summary>
            /// 获取指定文件夹下指定应用程序的快捷方式路径集合
            /// </summary>
            /// <param name="directory">文件夹</param>
            /// <param name="targetPath">目标应用程序路径</param>
            /// <returns>目标应用程序的快捷方式</returns>
            private List<string> GetQuickFromFolder(string directory, string targetPath)
            {
                List<string> tempStrs = new List<string>();
                tempStrs.Clear();
                string tempStr = null;
                string[] files = Directory.GetFiles(directory, "*.lnk");
                if (files == null || files.Length < 1)
                {
                    return tempStrs;
                }
                for (int i = 0; i < files.Length; i++)
                {
                    //files[i] = string.Format("{0}\{1}", directory, files[i]);
                    tempStr = GetAppPathFromQuick(files[i]);
                    if (tempStr == targetPath)
                    {
                        tempStrs.Add(files[i]);
                    }
                }
                return tempStrs;
            }
    
            /// <summary>
            /// 获取快捷方式的目标文件路径-用于判断是否已经开启了自动启动
            /// </summary>
            /// <param name="shortcutPath"></param>
            /// <returns></returns>
            private string GetAppPathFromQuick(string shortcutPath)
            {
                //快捷方式文件的路径 = @"d:Test.lnk";
                if (System.IO.File.Exists(shortcutPath))
                {
                    WshShell shell = new WshShell();
                    IWshShortcut shortct = (IWshShortcut)shell.CreateShortcut(shortcutPath);
                    //快捷方式文件指向的路径.Text = 当前快捷方式文件IWshShortcut类.TargetPath;
                    //快捷方式文件指向的目标目录.Text = 当前快捷方式文件IWshShortcut类.WorkingDirectory;
                    return shortct.TargetPath;
                }
                else
                {
                    return "";
                }
            }
    
            /// <summary>
            /// 根据路径删除文件-用于取消自启时从计算机自启目录删除程序的快捷方式
            /// </summary>
            /// <param name="path">路径</param>
            private void DeleteFile(string path)
            {
                FileAttributes attr = System.IO. File.GetAttributes(path);
                if (attr == FileAttributes.Directory)
                {
                    Directory.Delete(path, true);
                }
                else
                {
                    System.IO.File.Delete(path);
                }
            }
    
            /// <summary>
            /// 在桌面上创建快捷方式-如果需要可以调用
            /// </summary>
            /// <param name="desktopPath">桌面地址</param>
            /// <param name="appPath">应用路径</param>
            public void CreateDesktopQuick(string desktopPath = "", string quickName = "", string appPath = "")
            {
                List<string> shortcutPaths = GetQuickFromFolder(desktopPath, appPath);
                //如果没有则创建
                if (shortcutPaths.Count < 1)
                {
                    CreateShortcut(desktopPath, quickName, appPath, "软件描述");
                }
            }
    

    根据系统类型安装不同的SqlLocalDB。

    string[] hex = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };
    string buf = "";

    4.实测稳定可用,希望对你有帮助,谢谢支持。

    图片 2

    for (int i = 0; i < 8; i++)
    {
    result[i] = i % 2 == 0 ? ptbIndex[i >> 1] : uinByte[i >> 1];
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using IWshRuntimeLibrary;
    using System.Diagnostics;
    

    图片 3

    for (int i= 0; i < result.Length; i++)
    {
    buf += hex[(int)((result[i] >> 4) & 15)];
    buf += hex[(int)(result[i] & 15)];
    }
    return buf;
    }

    C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法函数的示例与实例带详细注释

    运行结果如下:

    图片 4

    1.必要引用

        图片 5

    long[] result = new long[8];

    using Microsoft.Win32;
    using System;
    using System.Windows.Forms;
    using System.Diagnostics;
    

        32位:

    • "/r/n" + Login_Hash);
      }
    /// <summary>
            /// 将本程序设为开启自启
            /// </summary>
            /// <param name="onOff">自启开关</param>
            /// <returns></returns>
            public static bool SetMeStart(bool onOff)
            {
                bool isOk = false;
                string appName = Process.GetCurrentProcess().MainModule.ModuleName;
                string appPath = Process.GetCurrentProcess().MainModule.FileName;
                isOk = SetAutoStart(onOff, appName, appPath);
                return isOk;
            }
    
            /// <summary>
            /// 将应用程序设为或不设为开机启动
            /// </summary>
            /// <param name="onOff">自启开关</param>
            /// <param name="appName">应用程序名</param>
            /// <param name="appPath">应用程序完全路径</param>
            public static bool SetAutoStart(bool onOff, string appName, string appPath)
            {
                bool isOk = true;
                //如果从没有设为开机启动设置到要设为开机启动
                if (!IsExistKey(appName) && onOff)
                {
                    isOk = SelfRunning(onOff, appName, @appPath);
                }
                //如果从设为开机启动设置到不要设为开机启动
                else if (IsExistKey(appName) && !onOff)
                {
                    isOk = SelfRunning(onOff, appName, @appPath);
                }
                return isOk;
            }
    
            /// <summary>
            /// 判断注册键值对是否存在,即是否处于开机启动状态
            /// </summary>
            /// <param name="keyName">键值名</param>
            /// <returns></returns>
            private static bool IsExistKey(string keyName)
            {
                try
                {
                    bool _exist = false;
                    RegistryKey local = Registry.LocalMachine;
                    RegistryKey runs = local.OpenSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun", true);
                    if (runs == null)
                    {
                        RegistryKey key2 = local.CreateSubKey("SOFTWARE");
                        RegistryKey key3 = key2.CreateSubKey("Microsoft");
                        RegistryKey key4 = key3.CreateSubKey("Windows");
                        RegistryKey key5 = key4.CreateSubKey("CurrentVersion");
                        RegistryKey key6 = key5.CreateSubKey("Run");
                        runs = key6;
                    }
                    string[] runsName = runs.GetValueNames();
                    foreach (string strName in runsName)
                    {
                        if (strName.ToUpper() == keyName.ToUpper())
                        {
                            _exist = true;
                            return _exist;
                        }
                    }
                    return _exist;
    
                }
                catch
                {
                    return false;
                }
            }
    
            /// <summary>
            /// 写入或删除注册表键值对,即设为开机启动或开机不启动
            /// </summary>
            /// <param name="isStart">是否开机启动</param>
            /// <param name="exeName">应用程序名</param>
            /// <param name="path">应用程序路径带程序名</param>
            /// <returns></returns>
            private static bool SelfRunning(bool isStart, string exeName, string path)
            {
                try
                {
                    RegistryKey local = Registry.LocalMachine;
                    RegistryKey key = local.OpenSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun", true);
                    if (key == null)
                    {
                        local.CreateSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run");
                    }
                    //若开机自启动则添加键值对
                    if (isStart)
                    {
                        key.SetValue(exeName, path);
                        key.Close();
                    }
                    else//否则删除键值对
                    {
                        string[] keyNames = key.GetValueNames();
                        foreach (string keyName in keyNames)
                        {
                            if (keyName.ToUpper() == exeName.ToUpper())
                            {
                                key.DeleteValue(exeName);
                                key.Close();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    string ss = ex.Message;
                    return false;
                    //throw;
                }
    
                return true;
            }
    
    Data Source=(LocalDb)MSSQLLocalDB;AttachDbFilename=|DataDirectory|MusicDBContext.mdf;Initial Catalog=MusicDBContext;Integrated Security=True
    

    上面就可以拿到 Login_ptwebqq  Login_Psessionid ,Login_Hash 这个hash  需要

    C#程序以管理员权限运行 - Cosmic_Spy - 博客园  

    1、打开Visual Studio 2017,依次点击“视图”(菜单栏)->“服务器资源管理器”,将会打开“服务器资源管理器”窗口:

    在这个js 拿到那个hash的值 JS里面的方法名是Hash2 里面是16进制 需要转换成C# 也可以直接  调用这个JS。第一个参数是Login_QQ 第二个Login_ptwebqq  

    C#如何以管理员身份运行程序 - 酷小孩 - 博客园  

    如下代码所示:

     

    2.代码实现-只需要调用SetMeAutoStart(bool onOff)方法就可以了,参数onOff表示自启开关

    在弹出的页面中,选择LocalDB(第三个),点击下一步下载SqlLocalDB.msi

    以上就是C# 获取smart qq  的vfwebqq ,psessionid,hash 

    方法二:修改计算机注册表的方式(需要管理员权限)

    本文由金沙国际官网发布于编程,转载请注明出处:程序实现软件开机自动启动的两种常用方法,的

    关键词: