我打算用写一个实现远程开机的程序,然后在安装时让他直接修改注册表实现开机自动启动,如何实现呢?  还有,或者希望在操作系统加载前就执行这个程序,怎么实现?  有没有除了网络唤醒方式以外的远程启动呢?

解决方案 »

  1.   

    string strAssName = Application.StartupPath + @"\" + Application.ProductName + @".exe";//获取应用程序的执行文件位置 
                    string ShortFileName = Application.ProductName;//获取应用程序名称  
                    RegistryKey hklm = Registry.LocalMachine;//读取windows注册表基项 
                    RegistryKey run = hklm.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");//创建或打开开机运行的注册表项 
                    RegistryKey rgkRun = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
                    if (rgkRun == null) 
                    { 
                        rgkRun = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); 
                        rgkRun.SetValue(ShortFileName, strAssName); 
                    } 
                    else 
                    { 
                        rgkRun.SetValue(ShortFileName, strAssName); 
                    } 
                    rgkRun.Close(); 
      

  2.   


    不通过软件你怎么实现?自己开发一套硬件来搞?1楼说得很明白了,现在基本只有网卡唤醒一种形式。知道其他方式的兄弟务必告知
    实现机制就是在网络上,向某一特定的网卡(找其MAC)发送指令,由网卡唤醒电脑
    中间要解决的问题是,1-如何远程透过路由器找到子网络上任意一台电脑的MAC(这句话不明白楼主估计要去补网络知识了)
    2-远程控制软件不只是简单的开机启动,要写成系统服务的形式,因为用户电脑电源打开后可能要求输入密码才允许登陆系统,而系统服务不登陆系统就开始运行
      

  3.   

    鼠标右键安装项目->视图->注册表,HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run中添加键值 
    使用[TARGETDIR]获取客户选择的路径,在加上软件的启动文件名称。