我试图使用本地(远程)数据库与服务器上的集中统一数据库(使用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'进行同步?为什么该进程无法将消息发送到服务器上的上述路径。
,我已经试过几件事情:
我现在用的是:: LogonUser的记录,在使用我的Windows域名和凭据的应用程序,并在()的代码。我有双重检查,我发送有效的凭据。
使用资源管理器,我可以成功导航到服务器上的上述路径,并可以添加/删除文件。
我已将我的用户标识添加到管理工具>>本地安全策略下的“本地安全设置”。
任何建议表示赞赏。
2013-04-11
Hemanth