このページで調べた再起動法を実行しようとしたのですがうまく行きません。
標準モジュールに
Public Declare Function ExitWindowsEx Lib "USER32" _
(ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Public Const EXIT_SAIKIDOU = 2
フォーム上コマンドボタン13に
Private Sub Command13_Click()
ExitWindowsEx EXIT_SAIKIDOU, 2
End Sub
何か間違っているところありますか?
Set objSystemSet = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}").InstancesOf("Win32_OperatingSystem")
For Each objSystem In objSystemSet
objSystem.Win32Shutdown 2
Next
拡張子をvbsにしてwクリック
http://madia.world.coocan.jp/vb/API/VBWINEXIT.htm
ですかね。
Win9xなら間違いじゃないのですが、
WinNT/Win2000/WinXPの場合は、特権が必要です。
http://www.galliver.co.jp/writing/msdn/msdn09/
>VBSでは
すみませんVBSの知識がないので良く分からないです。
VB6.0で作成してEXEファイルにしようとしてます。
>もげさん
そうです。ここです。http://madia.world.coocan.jp/vb/API/VBWINEXIT.htm
自分はXPですんでだめですね・・・
特権?何かインストールしなきゃいけないんですか?
MSDN-PSDK-ExitWindowsEx http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpsysinf/html/_win32_exitwindowsex.asp
の
EWX_REBOOT(=EXIT_SAIKIDOU)
のところ参考にしてみては。
>特権?何かインストールしなきゃいけないんですか?
前述
http://www.galliver.co.jp/writing/msdn/msdn09/
を最後まで読んでからのご発言ですか(--;?
そうでしょうねぇ〜
環境がかかれていなかったもので、VBSで回答したまでです。
まぁ、捨て置いてください
>VBSでは
すみませんこちらの説明不足でした
>もげさん
モジュール
Declare Function ExitWindowsEx Lib "user32.dll" _
(ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Public Const EWX_REBOOT = &H2&
フォーム
Private Sub Command13_Click()
Dim lngShutdownFlag As Long
Dim lngWin32apiResultCode As Long
lngWin32apiResultCode = _
ExitWindowsEx(EWX_REBOOT, &H2&)
End Sub
にしました。何がいけないんでしょうか?
もげさんが張ったページにぜんぶのってます。
アクセストークンについてもソースも・・
>おかめさん
↑のコードはもげさんが張ったページを見ての結果なんです。
アクセストークン調べました。
Private Declare Function OpenProcessToken Lib "advapi32" _
(ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
TokenHandle As Long) As Long
' トークン内を検索する
Private Const TOKEN_QUERY = &H8
' アクセス権の有効/無効を設定する
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
>OpenProcessToken
あなたのソースの何処で使われているの?
宣言しただけじゃ何も変わらないよ。
もっとリンク先を最後までみたら?
解決しました。
皆さんお騒がせいたしました
ツイート | ![]() |