0
public class JIntegra {
private static final String WMI_DEFAULT_NAMESPACE = "ROOT\\CIMV2";
private static JISession configAndConnectDCom(String domain, String user, String pass) throws Exception
{
JISystem.getLogger().setLevel(Level.OFF);
try
{
JISystem.setInBuiltLogHandler(false);
}
catch (IOException ignored)
{
}
JISystem.setAutoRegisteration(true);
JISession dcomSession = JISession.createSession(domain, user, pass);
dcomSession.useSessionSecurity(true);
return dcomSession;
}
private static IJIDispatch getWmiLocator(String host, JISession dcomSession) throws Exception
{
JIComServer wbemLocatorComObj = new JIComServer(JIProgId.valueOf("WbemScripting.SWbemLocator"), host, dcomSession);
return (IJIDispatch) JIObjectFactory.narrowObject(wbemLocatorComObj.createInstance().queryInterface(IJIDispatch.IID));
}
private static IJIDispatch toIDispatch(JIVariant comObjectAsVariant) throws JIException
{
return (IJIDispatch) JIObjectFactory.narrowObject(comObjectAsVariant.getObjectAsComObject());
}
public static void main(String[] args)
{
String domain = "syntbots.com";
// String host = "syncgdc3244";
String host = "192.168.175.65";
String user = "VK5017063";
String pass = "[email protected]";
JISession dcomSession = null;
try
{
dcomSession = configAndConnectDCom(domain, user, pass);
IJIDispatch wbemLocator = getWmiLocator(host, dcomSession);
JIVariant results[] =
wbemLocator.callMethodA("ConnectServer", new Object[] { new JIString(host), new JIString(WMI_DEFAULT_NAMESPACE),
JIVariant.OPTIONAL_PARAM(), JIVariant.OPTIONAL_PARAM(), JIVariant.OPTIONAL_PARAM(), JIVariant.OPTIONAL_PARAM(), new Integer(0),
JIVariant.OPTIONAL_PARAM() });
IJIDispatch wbemServices = toIDispatch(results[ 0 ]);
final String QUERY_FOR_ALL_LOG_EVENTS = "SELECT * FROM Win32_OperatingSystem";
final int RETURN_IMMEDIATE = 16;
final int FORWARD_ONLY = 32;
JIVariant[] eventSourceSet =
wbemServices.callMethodA("ExecNotificationQuery", new Object[] { new JIString(QUERY_FOR_ALL_LOG_EVENTS), new JIString("WQL"),
new JIVariant(new Integer(RETURN_IMMEDIATE + FORWARD_ONLY)) });
IJIDispatch wbemEventSource = (IJIDispatch) JIObjectFactory.narrowObject((eventSourceSet[ 0 ]).getObjectAsComObject());
while (true)
{
JIVariant eventAsVariant = (JIVariant) (wbemEventSource.callMethodA("NextEvent", new Object[] { JIVariant.OPTIONAL_PARAM() }))[ 0 ];
IJIDispatch wbemEvent = toIDispatch(eventAsVariant);
JIVariant objTextAsVariant = (JIVariant) (wbemEvent.callMethodA("GetObjectText_", new Object[] { new Integer(1) }))[ 0 ];
String asText = objTextAsVariant.getObjectAsString().getString();
System.out.println(asText);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (null != dcomSession)
{
try
{
JISession.destroySession(dcomSession);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
}
}
以下のエラーにorg.jinterop.dcom.common.JIException:errorCodeを見つかりませんメッセージ:0xC0000070
org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000070
at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:115)
at org.jinterop.dcom.core.JIProgId.getIdFromWinReg(JIProgId.java:130)
at org.jinterop.dcom.core.JIProgId.getCorrespondingCLSID(JIProgId.java:162)
at org.jinterop.dcom.core.JIComServer.<init>(JIComServer.java:429)
at JIntegra.getWmiLocator(JIntegra.java:43)
at JIntegra.main(JIntegra.java:94)
Caused by: jcifs.smb.SmbAuthException: Logon failure: user not allowed to log on to this computer.
at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:510)
at jcifs.smb.SmbTransport.send(SmbTransport.java:622)
at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:280)
at jcifs.smb.SmbSession.send(SmbSession.java:233)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:154)
at jcifs.smb.SmbFile.doConnect(SmbFile.java:847)
at jcifs.smb.SmbFile.connect(SmbFile.java:890)
at jcifs.smb.SmbFile.connect0(SmbFile.java:816)
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:73)
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:62)
at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2765)
at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:91)
at rpc.Stub.attach(Stub.java:106)
at rpc.Stub.call(Stub.java:110)
at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:113)
による方法を見つけました質問?エラーメッセージ "ログオンの失敗:このコンピュータにログオンできないユーザー"はかなり明確です。 –
ユーザーがコンピュータにログインできるように設定する必要がありますか? – vinzzz