socketserver(scktsrvr.exe)作为服务的启动问题

shaver 2006-12-07 08:50:14
我希望能以服务方式使用scktsrvr.exe程序,于是
scktsrvr.exe /install
然后启动,一切OK
如果我不使用本地用户(LocalSystem),而指定为其他用户(甚至Administrator),则启动失败.
另外我发现启动失败好象跟文件系统使用的是NTFS有关,放在另外的FAT分区则可以正常启动.
请指点!
...全文
485 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaver 2006-12-11
  • 打赏
  • 举报
回复
谢谢chinaloong!
曾经粗略的看了代码,只注意到了将"LocalSystem"改为"system"的部分,没有再往下看.
chinaloong能讲讲socketserver将帐户限定到LocalSystem帐户的原因吗?
否则的话,将最后一句修改一下,我就可以使用指定帐户了;我想一定是什么特殊原因的.
ChinaLoong 2006-12-11
  • 打赏
  • 举报
回复
function StartService: Boolean;
var
Mgr, Svc: Integer;
UserName, ServiceStartName: string;
Config: Pointer;
Size: DWord;
begin
Result := False;
Mgr := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if Mgr <> 0 then
begin
Svc := OpenService(Mgr, PChar(SServiceName), SERVICE_ALL_ACCESS);
Result := Svc <> 0;
if Result then
begin
QueryServiceConfig(Svc, nil, 0, Size);
Config := AllocMem(Size);
try
QueryServiceConfig(Svc, Config, Size, Size);
ServiceStartName := PQueryServiceConfig(Config)^.lpServiceStartName;
if CompareText(ServiceStartName, 'LocalSystem') = 0 then
ServiceStartName := 'SYSTEM';
finally
Dispose(Config);
end;
CloseServiceHandle(Svc);
end;
CloseServiceHandle(Mgr);
end;
if Result then
begin
Size := 256;
SetLength(UserName, Size);
GetUserName(PChar(UserName), Size);
SetLength(UserName, StrLen(PChar(UserName)));
Result := CompareText(UserName, ServiceStartName) = 0;
end;
end;

这个是scktsrvr判断install条件的代码
shaver 2006-12-11
  • 打赏
  • 举报
回复
又实验了一下,看来是我弄错了一点
在FAT32分区下,用非Localsystem帐户也是启动不了的
shaver 2006-12-10
  • 打赏
  • 举报
回复
>>回复人:LoveCJ(周杰伦就是一sb) ( 一级(初级)) 信誉:100 2006-12-8 17:25:27 得分:0

>>一般在Administrator下install就OK

我本来就是在Administrator里scktsrvr.exe /install的.
只是我想让这个服务不以LocalSystem帐户运行,而是使用某个指定帐户(比如Administrator).
这时如果scktsrvr.exe所在的分区是FAT32,一切正常;是NTFS就根本启动不了了
zuoansuifeng 2006-12-10
  • 打赏
  • 举报
回复
学习 ~~
shaver 2006-12-08
  • 打赏
  • 举报
回复
>>回复人:yi10000() ( 二级(初级)) 信誉:100
>>你在操作系统"服务"里面对你的用服务程序修改下密码和用户就行了,

指定用户的时候就已经设置密码了,否则用FAT32分区也启动不了的吧
LoveCJ 2006-12-08
  • 打赏
  • 举报
回复
一般在Administrator下install就OK
踢踏 2006-12-07
  • 打赏
  • 举报
回复
没去研究过~~~
hjksoft 2006-12-07
  • 打赏
  • 举报
回复
yi10000 2006-12-07
  • 打赏
  • 举报
回复
你在操作系统"服务"里面对你的用服务程序修改下密码和用户就行了,
GARNETT2183 2006-12-07
  • 打赏
  • 举报
回复
没遇到过。关注...

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧