CreateProcessWithLogonWで別ユーザとして作業するには?

解決


マダマダオ  2006-05-02 19:18:10  No: 95253

現在、CreateProcessWithLogonWというAPIを利用して、
一時的に管理者権限でレジストリのアクセス許可を変更しようとしています。
ですがネット上で見つけたソースを参考にしているのですがうまくいきません。
(http://www.accessclub.jp/bbs2/0052/beginter16952.html)
いろいろ調べてはいるのですが解決の糸口も見つかりません。
ソースの一部を載せておきますのでどなたか分かる方がいたら教えていただけないでしょうか。
開発環境はXPPro(SP1),VB6です。
よろしくお願いいたします。

--------------------------------------------------------------------------------------------
    StartInfo.cb = LenB(StartInfo)
    StartInfo.dwFlags = 0&
    UserName$ = "administrator"
    Domain$ = ""
    Pass$ = TxtPass.Text
    NullStr$ = ""
    
    MP 11
    RegSet$ = "C:\SubInAcl.exe /keyreg HKEY_LOCAL_MACHINE\SOFTWARE\Classes /grant=user=F"
    rc% = CreateProcessWithLogon( _
         StrPtr(UserName$), StrPtr(NullStr$), StrPtr(Pass$), _
         LOGON_NETCREDENTIALS_ONLY, StrPtr(RegSet$), StrPtr(NullStr$), _
         CREATE_DEFAULT_ERROR_MODE Or CREATE_NEW_CONSOLE Or CREATE_NEW_PROCESS_GROUP, _
         ByVal 0&, StrPtr(NullStr$), StartInfo, ProcessInfo)
    
    If rc% = 0 Then
        CloseHandle ProcessInfo.hThread
        CloseHandle ProcessInfo.hProcess
        ErrBox "CreateProcessWithLogon(アクセス権追加)に失敗しました。"
        Exit Function
    End If
        
    Shell SysDir$ & "REGSVR32.EXE /s " & OCX_PATH$, 6
    
    RegSet$ = "C:\SubInAcl.exe /keyreg HKEY_LOCAL_MACHINE\SOFTWARE\Classes /deny=user=F"
    rc% = CreateProcessWithLogon( _
         StrPtr(UserName$), StrPtr(NullStr$), StrPtr(Pass$), _
         LOGON_NETCREDENTIALS_ONLY, StrPtr(RegSet$), StrPtr(NullStr$), _
         CREATE_DEFAULT_ERROR_MODE Or CREATE_NEW_CONSOLE Or CREATE_NEW_PROCESS_GROUP, _
         ByVal 0&, StrPtr(NullStr$), StartInfo, ProcessInfo)

    CloseHandle ProcessInfo.hThread
    CloseHandle ProcessInfo.hProcess
    MP 0
    
    If rc% = 0 Then
      ErrBox "CreateProcessWithLogon(アクセス権削除)で失敗しました。"
    End If
--------------------------------------------------------------------------------------------


medaka  2006-05-02 20:43:37  No: 95254

>うまくいきません
どううまくいかないのかわかりません


マダマダオ  2006-05-02 23:25:24  No: 95255

引数の設定など、特におかしなところはないと思うのですが
CreateProcessWithLogonが成功しません。
(成功した場合は0以外の値が返ります。)
別のEXEでも試したのですがCreateProcessWithLogonの戻り値は0で返ってきます。


マダマダオ  2006-05-19 19:10:44  No: 95256

自己解決しました。
機能を組み込んでいたプログラム側に原因があったようです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加