• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:LogonUser関数が ERROR_PRIVILEGE_NOT_HELD エラーになる)

LogonUser関数でERROR_PRIVILEGE_NOT_HELDエラーが発生しました

itohhの回答

  • itohh
  • ベストアンサー率45% (210/459)
回答No.1

こんにちは。itohhといいます。 特権 SE_TCB_NAMEを有効にしてからLogonUser関数を実行してみてください。 // 特権 SE_TCB_NAME を有効にする。 if (!::EnablePrivilege(SE_TCB_NAME, TRUE)){  return FALSE; } bRet = LogonUser( "ABC",          ".",          "123",          LOGON32_LOGON_INTERACTIVE,          LOGON32_PROVIDER_DEFAULT,          &hToken); if (bRet == 0) {  dwLastError = GetLastError(); } // 特権 SE_TCB_NAME を無効にする。 ::EnablePrivilege(SE_TCB_NAME, FALSE);

nabezo-
質問者

補足

回答ありがとうございました。 ちょっと教えていただきたいことがあります。 EnablePrivilege関数についてMSDNを見たのですが、載っていませんでした。 (2001年110月版です) また、実際にコンパイルしてみてもエラーとなりました。 使用しているのは VC++ 6.0 です。 何か環境が古いのでしょうか。

関連するQ&A

  • API  LogonUser() について

    お世話になります。 LogonUser()というAPI使いたいんです。でもこのAPIを使おうとすると、「ERROR:0x522 クライアントは要求された特権を保有していません。」というエラーが発生してしまいます。 この原因は下記のWebページにも書いてありますが、 http://www.microsoft.com/japan/developer/library/jpsecupf/_win32_LogonUser.htm 「LogonUser 関数を呼び出すプロセスは、SE_TCB_NAME 特権を備えていなければなりません。ただし、この特権を有効にしておく必要はありません。LogonUser 関数は、必要に応じてこの特権を有効にします。呼び出し側のプロセスがこの特権を備えていない場合、LogonUser 関数は失敗し、GetLastError 関数は ERROR_PRIVILEGE_NOT_HELD を返します。」ということらしいです。 しかし、プロセスに特権を持たせるというのがわからないんです。 具体的に何をどうすれば良いのでしょう。 これ一つで、丸二日間頭を抱えています。 誰かおわかりになりませんでしょうか・・・

  • WindowsNTのログオンについて.

    こんにちは.いつも参考にさせていただいております. ちょっと,助けて欲しいのですが WindowsNTをたちあげて,ユーザー名とパスワードを入力して ”ログオン”中といって起動していましたら, しばらくたって”NT Logonのサービスが開始できません” というメッセージが出てしまい,(こんなの初めてです) ログオンできない状態です. ユーザー名とパスワードは間違っていません. 2~3日前まで問題なかったのですが…. どうか,解決方法を教えてください.

  • 【Win32Api】 ERROR_BAD_UNIT のエラーとなる原因は?

    WindowsNT 4.0、VC++ 5.0 の環境です。 Win32Api の CreateFile関数でエラーとなりました。 GetLastError関数で詳細エラーを確認すると、以下のエラーでした。 ERROR_BAD_UNIT:システムは指定されたデバイスを見つけることができません ログを取ってなかったため、CreateFile関数に指定したファイル名は不明です。 以下のように再現させようとしましたが、できませんでした。 <ファイルがない> ・ERROR_FILE_NOT_FOUND <不正なパス> ・ERROR_PATH_NOT_FOUND <FDドライブを指定> ・ERROR_NOT_READY <ファイル名の先頭を「:」から書く> ・ERROR_INVALID_NAME ERROR_BAD_UNIT のエラーとなる要因は、何が考えられるでしょうか?

  • エラー表示

    メール サーバーにログオンできませんでした。 パスワードが拒否されました。 アカウント : 'pop.y.dion.ne.jp', サーバー : 'pop.y.dion.ne.jp', プロトコル : POP3, サーバーの応答 : '-ERR Logon failed', ポート : 110, セキュリティ (SSL): なし, サーバー エラー : 0x800CCC90, エラー番号 : 0x800CCC92

  • ERROR 1044

    MySQLでデータベースを作成しようと思い、 create database abc; と実行すると、 ERROR 1044 (42000): Access denied for user: ''@'localhost' to database 'abc' とエラーが表示されます。 どうしたらいいんでしょうか?

  • OEの送信がエラーになります。

    OutlookExpressのログオンが出来ません。 今まではログオンをしなくてもOEが開けましたし、送受信も出来ましたが、 急にユーザー名とパスワードを求められるようになりました。 思い付くユーザー名やパスワードを記入しましたが、いずれも拒否されます。 そのエラーを無視してOE画面を開きますと、受信は今まで通りに出来てますが 送信はエラーになります。、 パソコンはWIN XP ブロバイダーはZAQです。 サーバーエラー 0x800ccc90 エラー番号 0x8000ccc92  と表示されます。 どうしたら今まで通りにログオンをしないで送信が可能になるのでしょうか、教えて下さい。 どうぞよろしくお願い致します。

  • パスワードがエラー

    作業中に突然ダウンして再ログインしようとしたら管理者パスワードがエラーになりました。 User Profile Sarviceサービスによるログオン処理に失敗しました。 ユーザープロファイルを読み込めません。 と表記されます。

  • ASPプログラミングでADODB.Connection (0x800A0E79)エラーが発生

    ASP+MSDE 実用Webアプリケーション作成ガイド「ASP実践プログラミング入門」 と言う本を頼りにASPを勉強中です。 現在は、 (1) SQL Server2000内にDBとTable(user_info)を作成。 (2) global.asaファイルを設置。 (3) 「ユーザ登録」aspを実行。(user_infoに追加された) (4) 「ログオン」aspを実行。 と進めていますが、(4)を実行しID+パスワードを入力後に次のような エラーがブラウザ上に表示されます。 どなたかお助け頂きたくお願いします。 Q1)『ADODB.Connection (0x800A0E79)オブジェクト・・』と怒られている   ようですが、何が原因なのでしょうか? Q2) 解決に向けて調べるべき要点はどこでしょうか? ■発生したエラーはここから■ (IE上の表示です) ページを表示できません 接続しようとするページに問題があるため、そのページを表示できません。 ---------------------対処方法 ・[更新] をクリックするか、後で再度実行してください。 ・次のホームページ 1**.**.***.**6を開き、 必要な情報が記載されたページ  へのリンクを探します。 HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス --------------------- 技術情報 (サポート担当者用) ・エラー タイプ  ADODB.Connection (0x800A0E79)  オブジェクトが開いている場合は、操作は許可されません。  /mailhen/logon.asp, line 4 ・ページ  POST 27 bytes to /mailhen/logon.asp ・POST Data:  user=mura****&pass=r*****k ■ここまで■ /mailhen/logon.asp, line 4 1:<% If Request.Form("user") <> "" Then 2: user_id = Request.Form("user") 3: password = Request.Form("pass") 4: adcn.Open Application("DBCN") 5: adrs.Open "select * from user_inf

  • アカウントのエラーについて

    とても困っております。 メールの送受信にて メール サーバーにログオンできませんでした。 パスワードが拒否されました。 アカウント : 'pop.m.dion.ne.jp', サーバー : 'pop.m.dion.ne.jp', プロトコル : POP3, サーバーの応答 : '-ERR Logon failed', ポート : 110, セキュリティ (SSL): なし, サーバー エラー : 0x800CCC90, エラー番号 : 0x800CCC92 となってしまい送受信ができません・ 解決方法をご存知のかた教えてください

  • アクセス権のチェック方法について

    あるフォルダ以下に、ユーザ毎にアクセス権が設定されたファイルがあり、指定したユーザが指定ファイルを読むことができるかをチェックするツールを作りたいと考えています。 APIを見ていて、LogonUser、ImpersonateLoggedOnUserを使ってチェックするユーザで偽装し、CreateFileでチェックするファイルを開けばよいかと思い、下記のようなコードを試しました。 ----- HANDLE hToken = NULL; HANDLE hFile = NULL; PTSTR pszUserName = "testuser"; PTSTR pszDomainName = "." PTSTR pszPassword = "testuser"; PTSTR pszFilePath = "C:\\test\\dir01\\001.txt"; try { { if (!LogonUser(pszUserName, pszDomainName, pszPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken)) { printf("error:%d\n",GetLastError()); goto leave; } hFile = CreateFile(pszFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, SECURITY_SQOS_PRESENT | SECURITY_EFFECTIVE_ONLY, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("error2:%d\n",GetLastError()); } else { printf("OK\n"); } } } leave:; } catch(...) {} ----- 実行するとLogonUser、ImpersonateLoggedOnUserは成功しているようですが、セキュリティの有無にかかわらずすべてのファイルがCreateFileに成功してしまいます。 読み取り権限が無いファイルに対してはCreateFileは失敗すると思っていましたが違うのでしょうか? それとも、セキュリティをチェックする方法として根本的に間違っています?? 情報をお待ちしております。 環境は以下の通りです。 Win2000 SP4 VisualStudio6(VC++)