如题

解决方案 »

  1.   

    启动桌面时启动照不?
    照的话,可以放到 启动组 中,
    也可以把你的程序写到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run里面,实现开机启动这样的效果是,启动时,在你的桌面上会自动弹出你的程序对话框
      

  2.   

    问下大侠:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    与HKEY_CURRENT_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    有上面区别吗
    程序放在哪个下面 执行快?
      

  3.   

    xp以下没区别,vista以上HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run你一般权限写不进去,所以推荐HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run都可以写进去,而且作用一样
      

  4.   

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
    里面的Userinit是在shell之前运行,由winlogon.exe创建进程
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
    里面的shell是自定义的外壳,由userinit.exe创建进程
    这两个都符合你的要求
      

  5.   

    如何添加项呢?
    真不知道怎么弄 望Lactoferrin
    指点
      

  6.   

    用windows api写注册表
    http://msdn.microsoft.com/en-us/library/ms724875(v=VS.85).aspx
      

  7.   

    我手动在  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
    的后面添加了一项目 但是重启后 完全不执行我的程序啊 ?高手指点
      

  8.   

    我知道怎么写注册表但我手动在注册表中添加了一个项  名称    类型        数据
    TXT    REG_SZ    D:\MYTEST.EXE
    然后我重启机器,这个程序就没有执行啊
      

  9.   

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
    里面的shell是自定义的外壳,由userinit.exe创建进程
    ==================
    将这里的shell改成你的程序,然后改一下你的程序,用CreateProcess启动explorer来启动桌面就行了。
      

  10.   

    上面不是说了吗,将上面注册表中的shell由expleror(这个就是桌面)改成你的程序名,这样你的程序就代替桌面启动了,然后在你的程序中用CreateProcess来启动explorer,这样你的程序肯定会在桌面之前运行了。
      

  11.   

    啊  这样?
    我不是这样做的 ,但一样能启动了
    在userint 中数据里添加的我看到后面是逗号 我想应该在这里添加
    多谢可爱的兔子党
      

  12.   

    把你的程序的窗口置为顶层
    SetWindowPos
    或者修改shell,把你的程序作为shell,不运行explorer,这样原来的桌面和任务栏就不会出现
      

  13.   

    SetForegroundWindow();
    this->SetWindowPos(&wndTopMost ,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE |SWP_SHOWWINDOW);
    还是不行,出现任务栏
      

  14.   

    你把你的程序放到那个Shell里面,不让explorer运行
      

  15.   

    在你的程序中CreateProcess调用explorer.exe
    不过你不想任务栏出来,又要桌面干什么啊?
      

  16.   

    试试这段代码,网上找的:
    GetWindowPlacement(&m_OldWndpl); //保存原窗口位置 CRect WindowRect,ClientRect;
     GetWindowRect(&WindowRect);      //获取普通窗口位置 //获取各个控制条之外的客户区位置
     RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,reposQuery,&ClientRect);
     ClientToScreen(&ClientRect); //获取屏幕分辩率
     int nFullWidth=GetSystemMetrics(SM_CXSCREEN);
     int nFullHeight=GetSystemMetrics(SM_CYSCREEN); //计算全屏显示的窗口位置
     m_FullScreenRect.left=WindowRect.left-ClientRect.left;
     m_FullScreenRect.top=WindowRect.top-ClientRect.top;
     m_FullScreenRect.right=(WindowRect.right-ClientRect.right)+nFullWidth;
     m_FullScreenRect.bottom=(WindowRect.bottom-ClientRect.bottom)+nFullHeight;    
     m_bFullScreen=TRUE;  //全屏标志 //进入全屏显示
     WINDOWPLACEMENT wndpl;
     wndpl.length=sizeof(WINDOWPLACEMENT);
     wndpl.flags=0;
     wndpl.showCmd=SW_SHOWNORMAL;
     wndpl.rcNormalPosition=m_FullScreenRect;
     SetWindowPlacement(&wndpl);
      

  17.   

    就是说,程序现在启动后 不能全屏只能全屏一部分。如上图,任务栏的区域不能全屏到这个区域
    以前在Run\里启动的时候,是能整个全屏的
    现在放在\WINDOWS NT\winlongon\
    后不能满屏了
      

  18.   

    你不早说,你把Userinit换成你的程序,原来的不要了
    当你的程序完成验证要退出时,再用createprocess运行userinit.exe
      

  19.   

    这个简单啊!
    你先用你的程序代替shell,通过验证之后用CreateProcess启动expleror就行了。
    而且如果你的客户端启动的同时也启动桌面的话,你的目的就达不到了,因为用一下快捷键就会绕过去。
      

  20.   

    更好的方法是你的程序运行时创建一个新的桌面,用SwitchDesktop切换过去
    当验证通过后再切换回原来的Default桌面,这样可防止别人用任务管理器结束你的进程
    因为winlogon只会在Default运行taskmgr,如果切换成了别的桌面taskmgr就看不到了
      

  21.   

    CreateProcess启动expleror  怎么设置参数啊 
      

  22.   

    explorer.exe 这个不是资源管理器吗
      

  23.   

    CreateProcess用法查msdn
    桌面图标和任务栏就归explorer.exe管
      

  24.   

      STARTUPINFO info;
    memset(&info,0,sizeof(info));
    info.cb=sizeof(info);
    PROCESS_INFORMATION pinfo;
    char cmd[128];
    strcpy(cmd,"Explorer.exe");
        if(!CreateProcess(NULL,cmd,NULL,NULL,FALSE,0,NULL,NULL,&info,&pinfo))
    {
    return;
    }启动的是  我的文档
      

  25.   

    你要把现在的explorer进程结束后再运行
      

  26.   

    不行啊 还是启动的 我的文档
    我现在都看不到桌面了在任务管理器上运行 Exlorer.exe 也是一样 打开我的文档
      

  27.   

    你用任务管理器结束explorer.exe
      

  28.   

    恩 改成 程序的执行目录了比如 d:\myexe.exe
      

  29.   

    你改了当然不行,快改回来
    不要改HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon里面的shell
    可以改HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon里面的shell
    你不要说没有,没有就自己建一个
      

  30.   

    用windows api写注册表
    http://msdn.microsoft.com/en-us/library/ms724875(v=VS.85).aspx 
     
      

  31.   

    这个用的我已经改了
    我现在在用你的办法  userinit。exe
      

  32.   

    其实那个 用createprocess 也行但就是不知道如何用这个API 运行桌面
      

  33.   

    照的话,可以放到 启动组 中,
    也可以把你的程序写到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run里面,实现开机启动
      

  34.   

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon里面的shell
      

  35.   

    截断explorer的运行,,也就是注册表里替换explorer,自己的程序调用explorer运行楼上就这意思