2013-07-16 66 views
5

Windows 8.1 đi kèm với một tính năng được gọi là "SlideToShutdown". Tôi đang cố gắng gọi tập tin thực thi đó theo chương trình. Tôi đã thử Process.Start(); trong C#, Shell() trong VB và (void)system(); trong C.

Lỗi nói là 'C:\Windows\System32\SlideToShutdown.exe' is not recognized as an internal or external command, operable program or batch file.

Nhưng trong nhắc lệnh khi tôi thực hiện start C:\windows\system32\slidetoshutdown.exe nó hoạt động hoàn hảo.Không thể gọi một tệp exe cụ thể theo chương trình

enter image description here

này được chương trình C của tôi (tên a.c) để gọi nó là

#include <stdlib.h> 
#include <stdio.h> 
int main() 
{ 
    (void)system("C:\\Windows\\System32\\SlideToShutDown.exe"); 
    return(0); 
} 

Xin hãy giúp tôi.

+0

những gì có thẻ? điều này có vẻ như C. – dandan78

+0

@ dandan78 OP đã thử C#, VB.NET và C. Anh ấy có thể muốn có giải pháp bằng bất kỳ ngôn ngữ nào trong số này. – Stijn

+0

@st bạn là chính xác, sai lầm của tôi. – dandan78

Trả lời

1

Bạn có lẽ sử dụng phiên bản 64-bit của Windows. Tuy nhiên, chương trình của bạn là quy trình 32 bit. Nó phải tuân theo file system redirection, nó sẽ thực sự tìm trong thư mục c: \ windows \ syswow64 cho chương trình. Thư mục chính cho các tập tin thực thi 32-bit. Nơi nó không tồn tại.

Cách giải quyết khác là sử dụng c:\windows\sysnative\slidetoshutdown.exe. Phần "sysnative" của tên thư mục sẽ được ánh xạ tới system32 cho một quá trình 32-bit. Bạn cũng nên tìm kiếm về mặt kỹ thuật thư mục chính, nó không nhất thiết phải là c: \ windows. Hàm GetWindowsDirectory().

Nếu bạn làm điều này trong một dự án được quản lý thì chỉ cần thay đổi thuộc tính Project + Properties, tab Build, Platform platform. Ủng hộ AnyCPU, tắt tùy chọn "Ưu tiên 32 bit" cho VS2012 trở lên. Mà sẽ làm cho chương trình của bạn chạy như một quá trình 64-bit và do đó sẽ không được chuyển hướng. Bây giờ chỉ đơn giản là Process.Start ("slidetoshutdown.exe") sẽ hoạt động. Việc tạo chương trình 64 bit C cũng không khó, chỉ cần thay đổi nền tảng đích thành x64.

0

Bạn có thể đã cố gắng này, dù sao tôi đề nghị:

system("start C:\\windows\\system32\\slidetoshutdown.exe"); 

?

+0

Tôi đã cố gắng không hoạt động .. !! –

+0

http://msdn.microsoft.com/en-us/library/96ayss4b%28v=vs.100%29.aspx? –

0

Thử Sau

System.Diagnostics.Process.Start("start","C:\\windows\\system32\\slidetoshutdown.exe") 
+0

Điều này không hoạt động .. –

+0

Điều này trông rất xấu xí: D –