簡體   English   中英

如何從C:\\ Windows \\ System32文件夾執行Windows System()命令?

[英]How to execute Windows System() command from C:\Windows\System32 folder?

我有一個批處理文件“ install.bat”存儲在位置“

c:\\ Users \\ abc \\ xyz

“。我想以管理模式從以下位置執行此批處理文件

C:\\ Windows \\ System32

使用System()API的文件夾。 任何人都可以請我知道如何以編程方式實現此VC ++。

我的代碼段:

int ret = System("c:\Users\abc\xyz\install.bat");

如果我給出此命令,則批處理文件當然是從“ c:\\ Users \\ abc \\ xyz”文件夾執行的。 但是我想從System32文件夾運行此批處理文件嗎?

提前致謝。

一種選擇是將cd命令作為.bat文件的第一行。 您可以更改調用過程的工作目錄,但這是使用錘子敲碎螺母。

如果您離開system功能,則可以調用CreateProcess 這樣一來,您就可以指定創建新流程時所需的所有細節。 您需要運行命令解釋器(通過讀取COMSPEC環境變量來查找該解釋器)。 您可以將新流程的工作目錄指定為CreateProcess的參數之一。

CreateProcess很難調用。 而且它對您提升管理員權限沒有幫助。 相反,您可以使用ShellExecute 將該動詞稱為傳遞的"runas" ,這將導致提升。

ShellExecute(0, "runas", "c:\\Users\\abc\\xyz\\install.bat", NULL, 
    "C:\\Windows\\System32", SW_SHOW);

您需要使用ShellExecute

類似於以下內容

ShellExecute(hwnd, "runas", "c:\\Users\\abc\\xyz\\install.bat", NULL, "c:\\windows\\system", SW_SHOWNORMAL );

在不使用System()的情況下,您只需將cd定位到包含.bat文件的位置,然后僅調用批處理文件即可

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM