0

このコードを使用して Windows サービスを開始します

public static bool StartService(string serviceName, int timeoutMilliseconds, params string[] args)
{
    ServiceController service = new ServiceController(serviceName);
    try
    {
        service.Start(args);
        TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
        service.WaitForStatus(ServiceControllerStatus.Running, timeout);
        return true;
    }
    catch
    {
        return false;
    }
}

しかし、このコードを試すたびに、アクセスが拒否されます。
これは UAC が原因である可能性があることを理解しています (このコードを実行している exe は昇格された特権で実行されていません)。
サービスパネルを使用して同じサービスを開始すると、実行されるのはなぜですか? サービスパネルは同じユーザー権限で開く必要がありますか?
特権を昇格せずに自分のコードを使用してこのサービスを開始するにはどうすればよいですか?

このサービスは C# で記述されておらず、ソース コードもありません。
これを Windows Seven (32 ビットと 64 ビットの両方) でテストしました。

4

0 に答える 0