在Windows XP的administrator账户下面用innosetup安装了vb应用程序。
这个系统下,还有另外两个账户,一个是admin权限,一个是limited权限。
在admin权限的两个账户运行这个vb程序正常,但是在limited权限下却出现runtime error。
估计是某个api所在dll不允许被访问。
曾试验过:limited权限下,在system32等目录中无法创建新文件。如此种种我用到的dll有如下:
user32.dll,Kernel32.dll,vic32.dll,oleacc.dll,msinet.ocx,msado20.tlb,mshtml.tlb,msvbvm60.dll,advapi32.dll请问:哪些不能再上述模式下访问???

解决方案 »

  1.   

    新建一个工程,以其它用户身份调用你原来的程序,参考:http://community.csdn.net/Expert/topic/4431/4431760.xml?temp=.3278162
      

  2.   

    lpUsername = "OtherUser"'改成你的用户名
    lpDomain = ""'改成你的域名,如果有的话
    lpPassword = "other_user_password"'改成你的密码以上几项是当前账户的信息,还是总是默认admin账户的信息?
      

  3.   

    //以上几项是当前账户的信息,还是总是默认admin账户的信息?对于你的问题而言,应该是管理员的用户名和密码
      

  4.   

    程序我改成了如下,没有域和密码,但是在text1(0)和Text1(3).Text填入正确数据后,按Command1却没有任何反应,为什么呢???Option ExplicitPrivate Const LOGON_WITH_PROFILE = &H1&
    Private Const LOGON_NETCREDENTIALS_ONLY = &H2&
    Private Const CREATE_DEFAULT_ERROR_MODE = &H4000000
    Private Const CREATE_NEW_CONSOLE = &H10&
    Private Const CREATE_NEW_PROCESS_GROUP = &H200&
    Private Const CREATE_SEPARATE_WOW_VDM = &H800&
    Private Const CREATE_SUSPENDED = &H4&
    Private Const CREATE_UNICODE_ENVIRONMENT = &H400&
    Private Const ABOVE_NORMAL_PRIORITY_CLASS = &H8000&
    Private Const BELOW_NORMAL_PRIORITY_CLASS = &H4000&
    Private Const HIGH_PRIORITY_CLASS = &H80&
    Private Const IDLE_PRIORITY_CLASS = &H40&
    Private Const NORMAL_PRIORITY_CLASS = &H20&
    Private Const REALTIME_PRIORITY_CLASS = &H100&Private Type PROCESS_INFORMATION
        hProcess As Long
        hThread As Long
        dwProcessId As Long
        dwThreadId As Long
    End TypePrivate Type STARTUPINFO
        cb As Long
        lpReserved As Long
        lpDesktop As Long
        lpTitle As Long
        dwX As Long
        dwY As Long
        dwXSize As Long
        dwYSize As Long
        dwXCountChars As Long
        dwYCountChars As Long
        dwFillAttribute As Long
        dwFlags As Long
        wShowWindow As Integer
        cbReserved2 As Integer
        lpReserved2 As Byte
        hStdInput As Long
        hStdOutput As Long
        hStdError As Long
    End TypePrivate Declare Function CreateProcessWithLogon Lib "Advapi32" Alias "CreateProcessWithLogonW" (ByVal lpUsername As Long, ByVal lpDomain As Long, ByVal lpPassword As Long, ByVal dwLogonFlags As Long, ByVal lpApplicationName As Long, ByVal lpCommandLine As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInfo As PROCESS_INFORMATION) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPrivate Sub Command1_Click()
        Dim lpUsername As String, lpDomain As String, lpPassword As String, lpApplicationName As String, lpCommandLine As String, lpCurrentDirectory As String
        Dim StartInfo As STARTUPINFO, ProcessInfo As PROCESS_INFORMATION
        
        lpUsername = Text1(0).Text
        lpDomain = Text1(1).Text
        lpPassword = Text1(2).Text
        lpApplicationName = Text1(3).Text
        lpCommandLine = vbNullString 'use the same as lpApplicationName
        lpCurrentDirectory = vbNullString 'use standard directory
        StartInfo.cb = LenB(StartInfo) 'initialize structure
        StartInfo.dwFlags = 0&
        CreateProcessWithLogon StrPtr(lpUsername), StrPtr(lpDomain), StrPtr(lpPassword), LOGON_WITH_PROFILE, StrPtr(lpApplicationName), StrPtr(lpCommandLine), CREATE_DEFAULT_ERROR_MODE Or CREATE_NEW_CONSOLE Or CREATE_NEW_PROCESS_GROUP, ByVal 0&, StrPtr(lpCurrentDirectory), StartInfo, ProcessInfo    CloseHandle ProcessInfo.hThread 'close the handle to the main thread, since we don't use it
        CloseHandle ProcessInfo.hProcess 'close the handle to the process, since we don't use it
    '   note that closing the handles of the main thread and the process do not terminate the process
    '   unload this application
    End Sub
      

  5.   

    //程序我改成了如下,没有域和密码,但是在text1(0)和Text1(3).Text填入正确数据后,按Command1却没有任何反应,为什么呢???text1(0)-Text1(3)的内容都要正确
      

  6.   

    找到问题了,它一定要求密码不为空。
    本来我的admin帐户没有密码,于是密码栏留空。能不能让密码为空的时候,也能够run啊????