Có thể, không sử dụng pinvoke, để khởi động lại PC bằng .NET không?Có thể khởi động lại máy tính bằng cách sử dụng .NET "thuần túy" và * không có * bằng cách sử dụng lệnh p/invoke không?
Tôi chỉ lặp lại tiêu đề, nhưng tôi không chắc chắn cách xây dựng nhiều hơn nữa!
Edit:
Tôi có nên nói rằng không muốn sử dụng "shutdown -r" như một giải pháp.
Tôi thật sự sau một cách tinh khiết NET, một cái gì đó như:
Environment.ShutDown();
Nói cách khác, một cái gì đó được duy trì với .NET như các phiên bản mới của Windows xuất hiện.
Sửa 2:
Hãy ngừng hỏi "có gì sai với p/gọi". Những loại câu trả lời đó chính xác là những gì mà người dùng SO có vẻ thích; cách tiếp cận "bên" được cho là để trả lời một câu hỏi. Tuy nhiên, mặc dù không có vấn đề thực sự với p/invoke và tôi sẽ vui vẻ sử dụng nó, những gì trên trái đất là sai với yêu cầu nếu NET có một cách chính thức hơn để đạt được một cái gì đó? Nếu nó nằm trong .NET thì bất kỳ thay đổi API nào giữa các hệ điều hành (rất có thể) sẽ được phản ánh. Dù lý do, nó không phải là một tội phạm để tìm cách giảm thiểu sử dụng nhập khẩu DLL là nó?
tôi chắc chắn rằng nếu tôi có một cái gì đó trong một câu hỏi như:
[DllImport("something32.dll")]
static extern int ClimbWall32Ex(IntPtr32 blah);
Và bạn chỉ có thể làm:
SomeNamespace.ClimbWall();
Mọi người ai ở đây sẽ hét lên: "những gì là sai với việc sử dụng SomeNamespace.ClimbWall();
?? "
Sigh.
Sự cố khi sử dụng P/Invoke là gì? Nó được sử dụng và nó được sử dụng rộng rãi trong BCL. –
... và thậm chí nếu có một đối tượng phơi bày một phương pháp để khởi động lại tôi muốn đặt cược nó sẽ chỉ được gọi các chức năng API Windows bản địa dưới mui xe. –
Không có vấn đề gì khi sử dụng p/invoke và hầu hết.NET chỉ là một wrapper cho Windows API, nhưng nếu có một cách NET làm việc thì nói chung bạn nên sử dụng nó! Ví dụ, bất kỳ bản cập nhật nào trong các hệ điều hành mới vv có thể không hỗ trợ các cuộc gọi API cũ sẽ được sửa (!) Với bản cập nhật cho .NET – joshcomley