2013-04-11 72 views
0

我試圖使用本地(遠程)數據庫與服務器上的集中統一數據庫(使用Sybase數據庫)進行同步。同步必須在預定的時間發生,我正在使用「CreateProcessByUser」。要啓動同步過程,我正在使用由sybase提供的dbremote.exe。來自服務的CreateProcessAsUser存在訪問遠程計算機的安全問題

所構造的命令行參數是:
COMMANDLINE =則Dbremote.exe -l 512K -x -k -c「DSN = HOME * * ; UID = DBA; PWD = *** ; CS =無; DBKEY = ***」 -OS千萬-o 「C:\數據\測試\ dbremote.log」 「C:\數據\測試」

BOOL startA_Process(HANDLE hToken, _TCHAR *commandLine, PROCESS_INFORMATION *pi, BOOL wait, _TCHAR *errBuf){ 

STARTUPINFO sStartupInfo; 

DWORD dwExitCode; 
DWORD dwStatus  = 0; 
DWORD dwCreationFlags = CREATE_NEW_CONSOLE; 
int  iResult; 
BOOL bInheritHandles = FALSE; 

LPCTSTR  pszApplicationName  = NULL; 
LPCTSTR  pszCurrentDirectory  = NULL; 
LPVOID  pvEnvironment   = NULL; 

LPSECURITY_ATTRIBUTES psProcessAttributes = NULL; 
LPSECURITY_ATTRIBUTES psThreadAttributes = NULL; 

// 
// Initilize STARTUPINFO structure 
// 
ZeroMemory(&sStartupInfo, sizeof(sStartupInfo)); 
sStartupInfo.cb = sizeof(sStartupInfo); 
sStartupInfo.lpTitle = _T("AutoSychDBRemote"); 
sStartupInfo.lpDesktop = _T("winsta0\\default"); 
// 
// Initilize PROCESS_INFORMATION structure 
// 
ZeroMemory(pi, sizeof(PROCESS_INFORMATION)); 

iResult = ::CreateProcessAsUser(
    hToken,      // handle to a token representing the logged-on user 
    pszApplicationName,    // name of executable module 
    (LPTSTR)commandLine,   // command line string 
    psProcessAttributes,   // process security attributes 
    psThreadAttributes,    // thread security attributes 
    bInheritHandles,    // whether new process inherits handles 
    dwCreationFlags,    // creation flags 
    pvEnvironment,     // pointer to new environment block 
    pszCurrentDirectory,   // pointer to current directory name 
    &sStartupInfo,     // pointer to STARTUPINFO 
    pi        // pointer to PROCESS_INFORMATION 
); 

該過程在遠程計算機上執行,並當發生同步時,應在遠程數據庫和統一數據庫之間交換消息。

如果我從Windows命令提示符執行上述命令行,同步工作成功。但是,當通過CreateProcessAsUser在預定的時間觸發我在日誌文件中看到以下錯誤信息:

日誌文件:

一2013-04-11 11點17分十一秒。發送信息到「BTI」
I. 2013-04-11 11:17:11。 sopen「\\ IP地址\數據庫\生產\消息\合併\ Rem00005.g」 失敗1326:無效的參數
I. 2013-04-11 11:17:11。 sopen「\\ IP地址\數據庫\生產\消息\合併\ Rem00005.h」 失敗1326:無效的參數
I. 2013-04-11 11:17:13。 sopen「\\ IP地址\數據庫\生產\消息\合併\ Rem00005.i」 失敗1326:無效參數
I. 2013-04-11 11:17:13。 sopen「\\ IP地址\數據庫\生產\消息\合併\ Rem00005.j」 失敗1326:無效參數
I. 2013-04-11 11:17:13。 sopen「\\ IP地址\數據庫\生產\消息\合併\ Rem00005.k」 失敗1326:無效參數
E. 2013-04-11 11:17:13。發送消息時出錯
I. 2013-04-11 11:17:13。重新發送請求正在排隊
I. 2013-04-11 11:17:14。執行完畢

其中「\\ IP地址\數據庫\生產\郵件\抗疏力」是我請求您對此的幫助,其中來自遠程計算機的消息會被複制

服務器上的文件夾中。爲什麼我能夠從命令提示符與爲什麼不從'CreateProcessAsUser'進行同步?爲什麼該進程無法將消息發送到服務器上的上述路徑。

,我已經試過幾件事情:

  1. 我現在用的是:: LogonUser的記錄,在使用我的Windows域名和憑據的應用程序,並在()的代碼。我有雙重檢查,我發送有效的憑據。

  2. 使用資源管理器,我可以成功導航到服務器上的上述路徑,並可以添加/刪除文件。

  3. 我已將我的用戶標識添加到管理工具>>本地安全策略下的「本地安全設置」。

任何建議表示讚賞。

回答

1

我能弄清楚答案: 我的遠程數據庫和統一數據庫位於屬於不同域的兩臺不同機器上。我登錄到遠程數據庫的用戶無法訪問統一計算機上的文件夾。 授予用戶對整合機器的訪問權限解決了問題。

相關問題