高分求解,为什么此cgi不能启动sqlserver?(200分)

  • 主题发起人 主题发起人 mkc
  • 开始时间 开始时间
M

mkc

Unregistered / Unconfirmed
GUEST, unregistred user!
1.本人想用cgi,通过ie远程启动(或关闭)sql server,写了下面的代码,代码在应用程序中能
启动sql server,但粘贴到cgi中,执行没错误,就是不能启动sql server,why?
procedure TWebModule1.WebModule1WebActionItem3Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
//start mssql server
var
lpServiceArgVectors:Pchar;
hscmanager,hService:SC_HANDLE;
returnstatus:TServiceStatus;
html:string;
exeresult:boolean;
begin
lpServiceArgVectors:=nil;
hscmanager:=OpenSCManager(nil,nil,SC_MANAGER_ENUMERATE_SERVICE);// 打开service control manager database
hService:=OpenService(hscmanager,'MSSQLSERVER',SERVICE_ALL_ACCESS);
//打开该Service
if(hService<0) then
begin
html:='无法打开该Service';
exit;
end;
QueryServiceStatus(hService,returnstatus); //查看该Service的状态
if returnstatus.dwCurrentState=SERVICE_STOPPED then //如果该Service已停止则启动它
begin
html:=html+'正在启动SQL SERVER数据库...';
StartService(hService,0,lpServiceArgVectors);
html:=html+'启动成功.';
end
else
html:=html+'无法打开SQL SERVER'+inttostr(returnstatus.dwServiceType);
CloseServiceHandle(hService);//关闭该Service
Response.Content:=html;
end;
2.如不用上述方法,通过IE启动远程的sql server 或 nt service,谁有高见?
 
佑计是因为用户权限的问题,通过IIS的用户都只有GUEST的权限...
你想,除了ADMIN还有谁可以启动SERVICE?
 
我把"Internet 来宾帐号"设置隶属于administrators,但还是不行.另外cgi中用
winexec或shellexecute或createprocess执行如at,net use,net start等命令也是
不行.也许是权限问题,但这么设置权限可以通过呢?
 
同意HORNEY,应该是权限问题。
 
直接调用winexec('net start mssqlserver')!
 
启动SQL的用户,是在安装的时候就确定了,一般用户名是administrator,,密码是你登录主机的密码。
但也有列外的,这就要看你装SQL的时候的设定了。还有你的CGI程序用的应该是IIS进程启动帐号,不是来宾帐号
 
我建议采用这个方法
先写一个程序com程序,专门用来启动sql server的
然后在cgi里,调用这个com对象,就可以搞定了
 
那位老兄为我写个这样的com,我就送他这200分.一个很容易的得分机会噢.也可以直接发到
我的信箱中kcm@163.net.
 
哈哈哈
你也太懒了吧?书上的粒子很多的
自己去抄去
 
后退
顶部