InitiateSystemShutdown调用不起作用

时间:2009-04-09 13:33:08

标签: c# winapi

我正在编写一个需要重启代码运行的Windows机器的应用程序。

在.NET中似乎没有一个API来执行此操作,所以我查找了Win32 API,它被称为InitiateSystemShutdown。外部声明如下:

[DllImport("advapi32.dll")]
public static extern bool InitiateSystemShutdown(string Machinename, string
Message, long Timeout, int ForceAppsClosed, int RebootAfterShutdown);

然后我尝试使用以下参数调用此操作系统例程:

InitiateSystemShutdown(null, null, 30, 1, 1);

但是,这总是返回false。所以我调用Marshal.GetLastWin32Error方法,它返回错误代码1008.此错误代码的消息是:

“尝试引用不存在的令牌。”

代码在Windows服务中运行,并在Administrator帐户下运行。我已经尝试将其作为本地系统运行而且没有效果。

1 个答案:

答案 0 :(得分:1)

请参阅MSDN中的以下示例:Displaying the Shutdown Dialog Box

您需要获得线程的正确权限。