因为我不想让用户使用除我的程序外的任何功能,所以就考虑能不能不登陆,机器启动后直接运行我的程序,请大家帮帮忙.另外,我写了一段程序总是提示我没有运行权限,帮我看看...
procedure TForm1.Button1Click(Sender: TObject);
var
  token: Thandle;
  lpStartupInfo: TStartupInfo;
  lpProcessInformation: TProcessInformation;
begin
  if LogonUser('administrator', '', 'pass', LOGON32_LOGON_INTERACTIVE,
                     LOGON32_PROVIDER_WINNT50, token) then
  begin
    FillChar(lpStartupInfo, sizeof(lpStartupInfo), 0);
    lpStartupInfo.cb := sizeof(lpStartupInfo);
    lpStartupInfo.wShowWindow := SW_SHOW;
    CreateProcessAsUser(token, 'D:\calc.exe', '', nil, nil,
              true, NORMAL_PRIORITY_CLASS,
              nil,
              nil,
              lpStartupInfo,
              lpProcessInformation);  end else
     CloseHandle(token);  Caption := Inttostr(getlasterror);
end;

解决方案 »

  1.   

    能不能用你的程序替换Windows的shell?
      

  2.   

    如果你只想用户只使用你的程序的话,你可以用shell=Myprog.exe
      

  3.   

    问题是现在把shell换了后,用户仍然可以通过输入法调出帮助文件,然后通过帮助文件启动explorer.exe程序,然后又什么都可以用了。但是,如果我不登陆,windows本身会阻止任何用户程序运行,当然我的程序运行的时候会指定登陆用户和密码的。
      

  4.   

    是阿,死树说的对,我记得哪里看过win2000较新版本就没有此问题。
    装新补丁吧
      

  5.   

    能不能监视出现Explorer就kill掉?
      

  6.   

    同意楼上的方法,这样不会强加给用户必须去安装一个124MB的windows2000补丁。如果你一定要使用第一种方法,那么只能把自己的程序做成服务进程,就可以你最先启动了
      

  7.   

    是不是要填入那个“安全”属性?
    关于ACL列表,的详细内容,有谁知道?