zoukankan      html  css  js  c++  java
  • 用inno做setup遇到的一些问题及解决方法

    1.获取当前Windows用户的全名(如果是域用户包含域名,如果是本机用户包含计算机名),inno实现代码:

    声明枚举类型
    type EXTENDED_NAME_FORMAT=(NameUnknown,NameFullyQualifiedDN,NameSamCompatible,NameDisplay);
    声明API方法
    function GetUserNameEx(NameFormat:EXTENDED_NAME_FORMAT;lpNameBuffer:String; var lpnSize:integer) : integer;
    external 
    'GetUserNameExA@secur32.dll stdcall';
    实现方法
    function GetUserName():string;
    var
      Ret:integer;
    begin
       lpNameBuffer:
    ='0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
       lpNameBuffer:
    =lpNameBuffer+lpNameBuffer;
       ret:
    =Length(lpNameBuffer);
       NameFormat:
    = NameSamCompatible;
       If GetUserNameEx(NameFormat, lpNameBuffer, Ret)
    <>0 Then
       begin
          
    if lpNameBuffer[Ret]=#0 then
          begin
              Ret:
    =Ret-1;
          end
          result:
    =Copy(lpNameBuffer,1,Ret);
       end
       
    else
       begin
          result:
    ='-1';
       end
    end;
    这个实现方法中主要有两个小问题:
    首先要初始化一个足够长度的string,否则GetUserNameEx无法写入;
    其次是在winxp系统下返回的用户名会比其他系统下多一个“\0”字符。

    2.WinXP系统下利用OLEDB连接本地SQLServer2005需要使用计算机名,而使用(local)或localhost都无法连接。利用ado.net没有这个问题,连接SQLServer Express也没有这个问题。

    3.Vista系统下将可执行文件改名为setup.exe将会自动以管理员的身份运行。
  • 相关阅读:
    jdbctemplate的batchUpdate使用方法
    js利用html5的canvas实现图像等比例压缩
    js前台通过EXIF.js获取图片中携带的经纬度信息
    Linux expr相关
    expect用于scp传输文件
    linux 自动登录ftp 获取文件
    作业8:单元测试练习(个人练习)
    作业7-用户体验设计案例分析
    作业6:团队作业——学生成绩录入系统设计与实现
    作业5:需求分析
  • 原文地址:https://www.cnblogs.com/end/p/841040.html
Copyright © 2011-2022 走看看