前提・実現したいこと
windows8.1において
ユーザ、パスワードを指定せずにQUERY USERの結果をプログラムで取得したいです。
取得する方法があれば教えてください。
もしくは、プログラムでユーザ、パスワードを実行時に取得して指定できるなら
それでも構わないですが、さすがに出来ないと思うので…
該当のソースコード
VisualBasic.Netのコンソールアプリケーションのsub mainにおいて以下のコード
VisualBasic
1 Dim p As New System.Diagnostics.Process 2 p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec") 3 p.StartInfo.UseShellExecute = False 4 p.StartInfo.RedirectStandardOutput = True 5 p.StartInfo.RedirectStandardInput = False 6 p.StartInfo.CreateNoWindow = True 7 p.StartInfo.Arguments = "/C QUERY USER" 8 9 p.Start() 10 11 Dim results As String = p.StandardOutput.ReadToEnd() 12 13 p.WaitForExit() 14 p.Close() 15
このresultsの内容がブランクになる
デバッグ実行時に
System.Environment.GetEnvironmentVariable("ComSpec")の結果として
"C:\WINDOWS\system32\cmd.exe"
が取れていることは確認しています。
試したこと
提示のコードでwindows10では取得できました。
・p.StartInfo.Verb = "RunAs"
・IWshRuntimeLibrary.WshShell
・バッチを作成し、それを呼び出す
VisualBasic.Netのプログラムとして上記は試してみましたが取得できませんでした。
p.StartInfo.Arguments = "/C PING www.yahoo.co.jo"
とすればpingの結果は取得できます。
自分で起動したコマンドプロンプトからの入力では取得できます。
VB.netで「query session」の結果を取得する方法
に記載してある通り、ユーザ名とパスワードを設定すると取得できました。
補足情報(FW/ツールのバージョンなど)
windows8.1
Microsoft Visual Studio Community 2019
10月OSシェア、Windows 10の増加が続く
…サポート対象外にする。というのも有りですかね。

あなたの回答
tips
プレビュー