1

Javaサーブレットを介してWindowsユーザーを認証する方法を疑問に思っているC++初心者。

これは、ユーザーのユーザー名ドメインとパスワードを使用して、Java サーブレットから JNI 呼び出しを取得するためにまとめたコードです。

#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h> 

#include "Validate.h"    

JNIEXPORT jstring JNICALL Java_Validate_takeInfo(JNIEnv *env, jobject obj, jstring domain, jstring id, jstring idca, jstring password) 
{
    const char *nt_domain;
    const char *nt_id;
    const char *nt_idca;
    const char *nt_password;

    nt_domain = env->GetStringUTFChars(domain, NULL);
    nt_id = env->GetStringUTFChars(id, NULL);
    nt_idca= env->GetStringUTFChars(idca, NULL);
    nt_password = env->GetStringUTFChars(password, NULL);

    handle hToken = 0;
    char *otherString;
    otherString = LogonUser(nt_id, nt_domain, nt_password, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, &hToken );

    jstring newString = env->NewStringUTF((const char*)otherString);
    return newString;
}

コンパイルしようとすると、次のエラーが発生します。

D:\JNI\Validate.cpp(21) : error C2065: 'handle' : undeclared identifier
D:\JNI\Validate.cpp(21) : error C2146: syntax error : missing ';' before
ier 'hToken'
D:\JNI\Validate.cpp(21) : error C2065: 'hToken' : undeclared identifier
D:\JNI\Validate.cpp(24) : error C2065: 'LOGON32_LOGON_NETWORK' : undeclar
tifier
D:\JNI\Validate.cpp(24) : error C2065: 'LOGON32_PROVIDER_DEFAULT' : undec
dentifier
D:\JNI\Validate.cpp(24) : error C3861: 'LogonUser': identifier not found

必要なものを含めていないと思います。どんな助けでも大歓迎です。

4

1 に答える 1

0

コンパイラが LogonUser を見つけられなかったということは、Windows ヘッダーが見つからないことを示唆しています。windows.h を含める

また、一般的な Windows ハンドル タイプは、すべて大文字で HANDLE と綴られています。

詳細については、LogonUserドキュメントを参照してください。

于 2009-06-15T16:47:10.487 に答える