1

プログラムで「サービスとしてログオン」ウィンドウを呼び出す方法は?コマンドラインとmmcを使用してこれを行うことはできますか?

4

1 に答える 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 に答える