11 个解决方案
#1
是不是service裡不可以調win應用阿?
#2
用ShellExecute试试呢
#3
路径呢?
我给段代码给你看看!
sprintf(szBuffer, "MoveKey Init.ini %s", szMac);
WinExec(szBuffer, SW_HIDE);
我给段代码给你看看!
sprintf(szBuffer, "MoveKey Init.ini %s", szMac);
WinExec(szBuffer, SW_HIDE);
#4
現在發現一個重要的問題,就是如果路徑裡寫的是一個網絡路徑,就不會成功,但是本極路徑就可以
例如:T盤為映射到其他機器的盤符,以下代碼就不能正確執行
char cm[120];
sprintf(cm, "T:\\exe\\myprogram.exe");
WinExec(cm, SW_SHOW);
該怎麼解決呢?難道就沒有辦法在一個服務裡執行遠端的程序嗎?
例如:T盤為映射到其他機器的盤符,以下代碼就不能正確執行
char cm[120];
sprintf(cm, "T:\\exe\\myprogram.exe");
WinExec(cm, SW_SHOW);
該怎麼解決呢?難道就沒有辦法在一個服務裡執行遠端的程序嗎?
#5
如果想你这样就能执行远端的程序,那网络也太不安全了,一般来讲,需要在远端机器上运行一个程序,由该程序来执行相应的命令。
#6
我想你理解錯了吧
我的意思只是在本極上執行遠端程序的備份,並不會對遠端機器造成不安全的因素
就好比執行一個自動更新的程序將補丁包執行到本極阿
我的意思只是在本極上執行遠端程序的備份,並不會對遠端機器造成不安全的因素
就好比執行一個自動更新的程序將補丁包執行到本極阿
#7
頂一下,幫忙阿
#8
又一个*同胞?......
#9
俺是大陸同胞
發現在服務程序裡執行DirectoryExists(path)或FileExists(filename)都返回false,而在不同的程序裡都是成功的.
不知怎麼解決啊?
難道真的要我在遠端機器上再寫個服務嗎(就為了調用遠端機器上的一個程序)?是不是除此之外沒有辦法了?!
發現在服務程序裡執行DirectoryExists(path)或FileExists(filename)都返回false,而在不同的程序裡都是成功的.
不知怎麼解決啊?
難道真的要我在遠端機器上再寫個服務嗎(就為了調用遠端機器上的一個程序)?是不是除此之外沒有辦法了?!
#10
大俠救命啊:)
#11
就沒人給一個確切的答案麼?
恳请专家指教:写了一个windows系统服务,但是在服务里调用远程映像盘上的外部程序不成功?
我使用C++Builder写了一个windows系统服务,用以在系统时间到达时调用一个已编译好
的应用程序,这个程序放在远程机器上,但是不知为何,其并没有调用成功.(无论是用方
法1还是方法2都不成功!!)
请问是什么原因造成的呢?调用本地程序是可以正确执行的,是不是在服务程序里不可以
调用远程机器上的应用程序呢?
以下为程序中的调用代码,V:为一映像盘:
void __fastcall TFmMain::RunProg(AnsiString ExePath)
{
char cm[120];
sprintf(cm, "V:\user\kaiser\test\Prog.exe /Skaiser /Dzdata /P /N /L:1");
//-----------方法1-----------
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
cm, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
LogWrite( "CreateProcess failed." );
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
//-----------方法2-----------
WinExec(cm, SW_HIDE);
}
//--------------------------------------------------------------------------
-
恳请专家指教:写了一个windows系统服务,但是在服务里调用远程映像盘上的外部程序不成功?
我使用C++Builder写了一个windows系统服务,用以在系统时间到达时调用一个已编译好
的应用程序,这个程序放在远程机器上,但是不知为何,其并没有调用成功.(无论是用方
法1还是方法2都不成功!!)
请问是什么原因造成的呢?调用本地程序是可以正确执行的,是不是在服务程序里不可以
调用远程机器上的应用程序呢?
以下为程序中的调用代码,V:为一映像盘:
void __fastcall TFmMain::RunProg(AnsiString ExePath)
{
char cm[120];
sprintf(cm, "V:\user\kaiser\test\Prog.exe /Skaiser /Dzdata /P /N /L:1");
//-----------方法1-----------
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
cm, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
LogWrite( "CreateProcess failed." );
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
//-----------方法2-----------
WinExec(cm, SW_HIDE);
}
//--------------------------------------------------------------------------
-
#1
是不是service裡不可以調win應用阿?
#2
用ShellExecute试试呢
#3
路径呢?
我给段代码给你看看!
sprintf(szBuffer, "MoveKey Init.ini %s", szMac);
WinExec(szBuffer, SW_HIDE);
我给段代码给你看看!
sprintf(szBuffer, "MoveKey Init.ini %s", szMac);
WinExec(szBuffer, SW_HIDE);
#4
現在發現一個重要的問題,就是如果路徑裡寫的是一個網絡路徑,就不會成功,但是本極路徑就可以
例如:T盤為映射到其他機器的盤符,以下代碼就不能正確執行
char cm[120];
sprintf(cm, "T:\\exe\\myprogram.exe");
WinExec(cm, SW_SHOW);
該怎麼解決呢?難道就沒有辦法在一個服務裡執行遠端的程序嗎?
例如:T盤為映射到其他機器的盤符,以下代碼就不能正確執行
char cm[120];
sprintf(cm, "T:\\exe\\myprogram.exe");
WinExec(cm, SW_SHOW);
該怎麼解決呢?難道就沒有辦法在一個服務裡執行遠端的程序嗎?
#5
如果想你这样就能执行远端的程序,那网络也太不安全了,一般来讲,需要在远端机器上运行一个程序,由该程序来执行相应的命令。
#6
我想你理解錯了吧
我的意思只是在本極上執行遠端程序的備份,並不會對遠端機器造成不安全的因素
就好比執行一個自動更新的程序將補丁包執行到本極阿
我的意思只是在本極上執行遠端程序的備份,並不會對遠端機器造成不安全的因素
就好比執行一個自動更新的程序將補丁包執行到本極阿
#7
頂一下,幫忙阿
#8
又一个*同胞?......
#9
俺是大陸同胞
發現在服務程序裡執行DirectoryExists(path)或FileExists(filename)都返回false,而在不同的程序裡都是成功的.
不知怎麼解決啊?
難道真的要我在遠端機器上再寫個服務嗎(就為了調用遠端機器上的一個程序)?是不是除此之外沒有辦法了?!
發現在服務程序裡執行DirectoryExists(path)或FileExists(filename)都返回false,而在不同的程序裡都是成功的.
不知怎麼解決啊?
難道真的要我在遠端機器上再寫個服務嗎(就為了調用遠端機器上的一個程序)?是不是除此之外沒有辦法了?!
#10
大俠救命啊:)
#11
就沒人給一個確切的答案麼?
恳请专家指教:写了一个windows系统服务,但是在服务里调用远程映像盘上的外部程序不成功?
我使用C++Builder写了一个windows系统服务,用以在系统时间到达时调用一个已编译好
的应用程序,这个程序放在远程机器上,但是不知为何,其并没有调用成功.(无论是用方
法1还是方法2都不成功!!)
请问是什么原因造成的呢?调用本地程序是可以正确执行的,是不是在服务程序里不可以
调用远程机器上的应用程序呢?
以下为程序中的调用代码,V:为一映像盘:
void __fastcall TFmMain::RunProg(AnsiString ExePath)
{
char cm[120];
sprintf(cm, "V:\user\kaiser\test\Prog.exe /Skaiser /Dzdata /P /N /L:1");
//-----------方法1-----------
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
cm, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
LogWrite( "CreateProcess failed." );
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
//-----------方法2-----------
WinExec(cm, SW_HIDE);
}
//--------------------------------------------------------------------------
-
恳请专家指教:写了一个windows系统服务,但是在服务里调用远程映像盘上的外部程序不成功?
我使用C++Builder写了一个windows系统服务,用以在系统时间到达时调用一个已编译好
的应用程序,这个程序放在远程机器上,但是不知为何,其并没有调用成功.(无论是用方
法1还是方法2都不成功!!)
请问是什么原因造成的呢?调用本地程序是可以正确执行的,是不是在服务程序里不可以
调用远程机器上的应用程序呢?
以下为程序中的调用代码,V:为一映像盘:
void __fastcall TFmMain::RunProg(AnsiString ExePath)
{
char cm[120];
sprintf(cm, "V:\user\kaiser\test\Prog.exe /Skaiser /Dzdata /P /N /L:1");
//-----------方法1-----------
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
cm, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
LogWrite( "CreateProcess failed." );
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
//-----------方法2-----------
WinExec(cm, SW_HIDE);
}
//--------------------------------------------------------------------------
-