[英]Copying a file from C:\Windows\System32 folder to C:\Windows\SysWOW64 folder using Fortran and/or C++
[英]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.