プログラムで「サービスとしてログオン」ウィンドウを呼び出す方法は?コマンドラインとmmcを使用してこれを行うことはできますか?
1 に答える
2
コメントで要求されたように、私はすでに登録されたサービスのユーザー名とパスワードを設定するいくつかの非常に単純なコードを持っています。当然、これは、昇格された権限があるサービスのインストール時に実行する必要があります。コードはたまたまDelphiにありますが、別の言語に移植するのは簡単なはずです。関数呼び出しはすべてWindowsAPI呼び出しであり、ドキュメントはMSDNにあります。
SvcMgr := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SvcMgr=0 then begin
RaiseLastOSError;//calls GetLastError and raises appropriate exception
end;
Try
//Name is the name of service and is used here to identify the service
hService := OpenService(SvcMgr, PChar(Name), SC_MANAGER_ALL_ACCESS);
if hService=0 then begin
RaiseLastOSError;
end;
Try
if not ChangeServiceConfig(
hService,
SERVICE_NO_CHANGE,
SERVICE_NO_CHANGE,
SERVICE_NO_CHANGE,
nil,
nil,
nil,
nil,
PChar(Username),//PChar just turns a Delphi string into a null-terminated string
PChar(Password),
nil
) then begin
RaiseLastOSError;
end;
if not ChangeServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, @ServiceDescription) then begin
RaiseLastOSError;
end;
Finally
CloseServiceHandle(hService);
End;
Finally
CloseServiceHandle(SvcMgr);
End;
サービスをどのように登録しているかはわかりませんが(まだ言っていません)、サービス登録でユーザー名とパスワードを設定できる可能性があります。
インストール中にすでに電話をかけている場合CreateService
は、それがユーザー名とパスワードを設定する必要があるポイントです。
于 2011-11-30T14:31:28.520 に答える