-1

ユーザーがマシンにアクセスできることを確認しようとしています。

ここで説明されているように、 LogonUserを使用しようとしています。

    logging.info("checking credentials")
    try:
        win32security.LogonUser (
            name, 
            domain,
            password,
            win32security.LOGON32_LOGON_NETWORK,
            win32security.LOGON32_PROVIDER_DEFAULT
        )
    except win32security.error, e:
        logging.warn(e)
        raise e
    else:
        logging.info('pass')

nameただし、私がまたはpassword(と言う)何を入れてもdomain = None、常に合格です。

何か不足していますか?

更新:再現する:

import win32security

print win32security.LogonUser (
                "asdasdasdasdfagf", 
                None,
                "asdasdasdasdasda",
                win32security.LOGON32_LOGON_NETWORK,
                win32security.LOGON32_PROVIDER_DEFAULT
            )

出力:

<PyHANDLE at 34009576 (276)>
4

1 に答える 1

3

実際にあなたが求めている答えではないかと思いますが、テストすることと、私が使用するアプリで成功する方法との違いは、LOGON32_LOGON_NETWORKフラグの代わりにフラグを使用することだけLOGON32_LOGON_INTERACTIVEです。ただし、当社の製品の機能については、デスクトップの双方向性に関する特定の要件があり、実際に結果に影響を与える変更ではないかと思います。

def testLogin(self):
  try:
    LogonUser(self.wrappers['User'].GetValue(),
              self.wrappers['Domain'].GetValue(),
              self.wrappers['Password'].GetRawValue(),
              LOGON32_LOGON_INTERACTIVE,
              LOGON32_PROVIDER_DEFAULT)
    RevertToSelf()
  except Exception, e:
    wx.MessageBox(unicode(e), _("Error"))
    return False
  return True

ドメイン値はNone現在のドメインを参照する必要があるため、システムで任意のユーザー名とパスワードを使用してこのコードを実際に実行できる場合は、システムに問題があるか、ドメインに問題があります。

于 2013-01-12T00:26:40.827 に答える