• 締切済み

'の付いてるユーザのSIDを取得

VB2005にて開発をしています。 Win2000ServerのActiveDirectoryから各ユーザ、グループのSIDを取得したいのですが、「'」が 付いているものだけ「HRESULT からの例外: 0x80041017」というエラーで取得できません。 「''」としても同じエラーでした。(★がエラーになる箇所) どなたか対応方法をご存知でしたらご教授下さい。宜しくお願いします。 以下がソースになります。 Locator = CreateObject("WbemScripting.SWbemLocator") Service = Locator.ConnectServer("サーバー名", "", "ユーザID", "パスワード") 'WMIクエリ生成 If _GROUPorUSER = 1 Then 'グループユーザーならこっち strQuery = "Select * From Win32_Group WHERE Name = '" & _ID & "'" ElseIf _GROUPorUSER = 2 Then 'ユーザーならこっち strQuery = "Select * From Win32_UserAccount WHERE Name = '" & _ID & "'" End If 'WMIクエリを実行 UsrSet = Service.ExecQuery(strQuery) 'クエリから結果取得し文字列生成(Usr.SIDにSIDが入ってる) For Each Usr In UsrSet ★ strSID = Usr.sid Next

みんなの回答

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.1

' とか " が入っているユーザーの場合、どういう Query 文字列を作っちゃってるのかは確認した? 解決策はよくわからんが、ユーザー名の中の ' とか " を二重化してみたら?

関連するQ&A

  • SQLite3(PDO)でクエリー件数を取得したい

    SQLite3をPHPで使用しています。 ネットでいろいろ見たのですがわかりませんでしたのでこちらで質問させて頂きました。 SELECTで条件に合うidを抽出した場合にその行数を取得したいのですが、どのようにするとスマートに取得できるのでしょうか? スマートにというのは「データベースへのアクセスが一度で済むような」という意味です。抽出データの取得と件数の取得が一度のアクセスで可能なのでしょうか? $pdo = new PDO(sqlite:test.db); $query = $pdo->prepare('SELECT id FROM testTable WHERE id > 0 AND id < 10'); $query->execute(); 私が現在行なっているのは、データ抽出は上記のコードでやって、件数の取得は以下のようにしています。 $query = $pdo->prepare('SELECT count(*) FROM testTable WHERE id > 0 AND id < 10'); $query->execute(); $num = $query->fetch(PDO::FETCH_NUM); echo $num[0]; ネットで調べてもMySQLやPostgreSQLのことしか載っていなく、なかなかSQLite3での取得方法がわかりません。 お手数ですが教えて頂ければと思います。よろしくお願い致します。

  • あるユーザーのプロセスを終了するスクリプト

    あるユーザーのプロセスを終了するスクリプト お世話になっております。 VBSを使用してUser01が起動したJAVAプロセスを終了するスクリプトを作成する事を検討しています。 wmiを使って以下のようなコード(一部抜粋)を書くと、プロセスは終了できるのですが、 これからどうやってユーザを特定させるのかわかりません。 Set objProcessList = objWmiService.ExecQuery("Select * From Win32_Process where Caption = 'java.exe'") 'javaのプロセスを全部殺す For Each objProcess In objProcessList   result = objProcess.Terminate   If result <> 0 Then   msgbox "エラー" End IF Next アドバイスをお願いします。

  • select max~の値の取得方法

    select Max(x) from table where y=1 基本的なことかもしれませんが、上のようなクエリを実行したときの値の取得の仕方を教えてください。 単純に query="select Max(x) from table where y=1" a=Execute query としたら「ステートメントの末尾が不正です。」というエラーが出ました。

  • サブクエリの複数項目

    いつもお世話になっております。 サブクエリで複数項目を取得する方法をご教授下さい。 [既存] select 商品, 価格, (select user_id from user_master where user_id = 1 ) from products where 商品ID = 1 上記のようなSQLがあり、 user_masterから取得する項目をもうひとつ追加したいと思っています。(user_name) select 商品, 価格, (select user_id, user_name from user_master where user_id = 1 ) as user from products where 商品ID = 1 と修正したいのですが、当然エラーになってしまいます。 この場合は別にサブクエリを指定して取得した方がいいのでしょうか。 宜しくお願い致します。

  • WHERE句に複数のユーザーIDがある場合

    MySQLで購入管理データを作っています。 buying_table`(`b_usr_id`, `b_buy_volume`, `b_buyname`) `usr_table`(`u_usr_id`, `u_buy_volume`, `u_buyname`) の2つのテーブルがあります。 `usr_table` には100件のユーザーデータが入っています。 このうち特定のユーザーについてbuying_table`に複写します。 ユーザー名を1001に指定し下記のSQL文を行うと、無事複写が出来ました。 INSERT INTO `buying_table`(`b_usr_id`, `b_buy_volume`, `b_buyname`) SELECT `u_usr_id`, `u_buy_volume`, `u_buyname`, FROM `usr_table` WHERE `u_usr_id`=('1001') 今回は、()の中で、複数のユーザー名を指定し、インサートをする必要があります。 そこで、サブクエリの複数指定で使用するANYを使用し下記のSQL文にしたのですがエラーになります。 INSERT INTO `buying_table`(`b_usr_id`, `b_buy_volume`, `b_buyname`) SELECT `u_usr_id`, `u_buy_volume`, `u_buyname`, FROM `usr_table` WHERE `u_usr_id`=ANY('1001','1004','1005') #1064 - You have an error in your SQL syntax; check the manual サブクエリなら簡単なんですが、このように「単純に文字が入っている場合の複数設定」はどう記載すればいいか教えてください。 事情があり()の中でユーザー名が複数カンマ区切りされている以外の設定は出来ない状況です。 宜しくお願い致します。 CentOS6.3 MySQL5.5です

    • ベストアンサー
    • MySQL
  • Basic認証: PHP_AUTH_USERが

    環境:CentOS6.3, PHP Version 5.3.3, Apache/2.2.15 (CentOS) ,MySQL Server version 5.1.61 (Client API versionも同じ) です。テーブルmembers にname,password の2欄があり、データがそれぞれ、taro , abc と入っています。  ここで phpを下記のように書きました。 1 <?php 2 // データベースに接続      中略 7 8 // 認証処理(Basic認証) 9 if (!isset($_SERVER["PHP_AUTH_USER"])) { 10 header("WWW-Authenticate: Basic"); 11 header("HTTP/1.0 401 Unauthorized"); 12 exit; 13 }else{ 14 var_dump(($_SERVER)." --line_a"."<br />"); 15 print ("ユーザ名:". $_SERVER['PHP_AUTH_USER']." --line_b"."<br />"); 16 17 // 入力されたアカウントが正しいかチェック 18 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account` WHERE name = $_SERVER [ 'PHP_AUTH_USER' ] AND password = $_SERVER ['PHP_AUTH_PW' ]", $conn); 19 20 echo( $_SERVER [ 'PHP_AUTH_USER' ]."-".$_SERVER ['PHP_AUTH_PW' ]."--line_c"."<br />"); 21 echo($result."--line_d"."<br />"); 以下略 これでブラウザから認証を経てログインすると、 string(20) "Array --line_a " ユーザ名:taro --line_b taro-ptaro--line_c --line_d となって、$result に値が入りません。 18行の WHERE句を外し、 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account`", $conn) or die("result取得エラー") ; とすると、 string(20) "Array --line_a " ユーザ名:taro --line_b taro-abc--line_c Resource id #3--line_d となり、$result にResource id #3 が返ります。 WHERE句で name = 'taro'  を指定し、 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account` WHERE name = 'taro' ", $conn) or die("result取得エラー");  とすると、 string(20) "Array --line_a " ユーザ名:taro --line_b taro-abc--line_c Resource id #3--line_d となり、やはり、$result にResource id #3 が返ります。password を追加し、WHERE name = 'taro' AND password = 'abc' としても、Resource id #3--line_d と出ます。 ところが、18行の taro を $_SERVER [ 'PHP_AUTH_USER' ] に置き換え、 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account` WHERE name = $_SERVER [ 'PHP_AUTH_USER' ] AND password = 'abc'", $conn) or die("result 取得エラー") ; string(20) "Array --line_a " ユーザ名:taro --line_b result 取得エラー となって、$result に値が入りません。 $_SERVER [ 'PHP_AUTH_USER' ] を’’で囲んでも同じ。 何故でしょうか? どのようにすれば不具合の解決ができるでしょうか?

    • ベストアンサー
    • PHP
  • Active DirectoryユーザのADSIを使ったセキュリティグループの取得

    いつもお世話になります。 ADSIをつかってActive Directoryに登録されている1人のユーザから 登録されているセキュリティグループ一覧を取得する方法がわかる方 がおりましたらご教授頂きたく質問させて頂きました。 環境はWindows2000+ACCESS2000VBAです。 ちなみに何となくこんな感じというコードを書きます。 Dim objUser As IADsUser Set objUser = GetObject("'LDAP://' & 'CN='ユーザ名,' & 'CN=Users,' & 'DC=***,' & 'DC=co,' & 'DC=jp'") For Each ここがわかりません。 Next 別の方法でADOを使ったコードでも取得できそうですが、Where句のスキーマがわかりません。 下記のコードで登録ユーザのメールの一覧が取得できました。 Set Con = CreateObject("ADODB.Connection") Set Com = CreateObject("ADODB.Command") Con.Provider = "ADsDSOObject" Con.Open "Active Directory Provider" Set Com.ActiveConnection = Con Com.CommandText = "select name,mail from 'LDAP://DC=***, DC=co, DC=jp' WHERE " _ & "objectCategory='Person' " _ & "AND objectClass = 'user' " Set RS = Com.Execute While Not RS.EOF Debug.Print RS.Fields("Name") & " , " & RS.Fields("mail") RS.MoveNext Wend このSQLコマンドを select S_GROUP from *** where USER_ID に替えたいのです。 どちらかで結構なのでお願い致します。

  • データを昇順に並べるには

    $query = "select id,name,jyusyo,kakaku,gazou,link from kensaku where"; と書いてDBから正常にデータが取得できています。これを (1)$query = "select id,name,jyusyo,kakaku,gazou,link from kensaku order by kakaku"; (2)$query = "select id,name,jyusyo,kakaku,gazou,link from kensaku order by kakaku asc"; (3)$query = "select id,name,jyusyo,kakaku,gazou,link from kensaku [where where_definition] order by kakaku";(このやり方はPHPプロというサイトで教えてもらいました) これら三つどれを書いてもエラーになります。どうしたら良いでしょうか??

    • ベストアンサー
    • PHP
  • ユーザーが定義したストアドプロシージャ一覧の取得

    SQL Server 2005で、 db内のストアドプロシージャ一覧を取得したいと思っています。 select o.* from syscomments c , sysobjects o where c.id = o.id and o.type='P' order by o.name といったように記述すれば一覧は取得できるようですが、 これだとシステムストアドプロシージャも表示されてしまいます。 ユーザーで定義したストアドプロシージャのみ取得したいのですが、可能でしょうか? 何か良い手段をご存じの方がいらっしゃいましたらアドバイス頂けますと嬉しいです。 どうぞよろしくお願いいたします。

  • PEAR::DBで取得したデータで処理を分岐したい

    DB関連が苦手な上、動作がうまくいかず、アドバイスをいただければと存じます。現在PHP4、MYSQL4.1.20を使用しております。 行いたい処理は、 PEAR::DBで実行したクエリ SELECT MAX(id) FROM table WHERE `name` = '$test'; 等で、whereで一致する行を絞込み、そのうちの最大値のIDを取得 (クエリの動作は、MYSQL単体で行った場合問題なしで、idの値を取得) その後MAX()で取得した1つIDを、$resultに代入したいのですが、どの様に行えばよいのかわかりません。 今までfetchRow()で事足りていたことで、他の関数がわかりません>< $result=$DB->getOne("SELECT MAX(id) FROM table WHERE `name` = '$test';"); といった感じで取得するのが良いのかも知れませんが、うまく取得できずに詰まっておりますorz 解決法、アイデア等ございましたら、お伺いできればと存じます。 上記ソースは、質問させていただく上で、新規に書いたソースですので、カラム名、変数は仮のものです。不明な情報等ございましたら、捕捉させていただきたいと存じます。

    • 締切済み
    • PHP

専門家に質問してみよう