用inno做setup遇到的一些问题及解决方法
生活随笔
收集整理的這篇文章主要介紹了
用inno做setup遇到的一些问题及解决方法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.獲取當(dāng)前Windows用戶的全名(如果是域用戶包含域名,如果是本機(jī)用戶包含計(jì)算機(jī)名),inno實(shí)現(xiàn)代碼:
聲明枚舉類型
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'; 實(shí)現(xiàn)方法
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; 這個(gè)實(shí)現(xiàn)方法中主要有兩個(gè)小問題:
首先要初始化一個(gè)足夠長(zhǎng)度的string,否則GetUserNameEx無法寫入;
其次是在winxp系統(tǒng)下返回的用戶名會(huì)比其他系統(tǒng)下多一個(gè)“\0”字符。
2.WinXP系統(tǒng)下利用OLEDB連接本地SQLServer2005需要使用計(jì)算機(jī)名,而使用(local)或localhost都無法連接。利用ado.net沒有這個(gè)問題,連接SQLServer Express也沒有這個(gè)問題。
3.Vista系統(tǒng)下將可執(zhí)行文件改名為setup.exe將會(huì)自動(dòng)以管理員的身份運(yùn)行。
聲明枚舉類型
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'; 實(shí)現(xiàn)方法
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; 這個(gè)實(shí)現(xiàn)方法中主要有兩個(gè)小問題:
首先要初始化一個(gè)足夠長(zhǎng)度的string,否則GetUserNameEx無法寫入;
其次是在winxp系統(tǒng)下返回的用戶名會(huì)比其他系統(tǒng)下多一個(gè)“\0”字符。
2.WinXP系統(tǒng)下利用OLEDB連接本地SQLServer2005需要使用計(jì)算機(jī)名,而使用(local)或localhost都無法連接。利用ado.net沒有這個(gè)問題,連接SQLServer Express也沒有這個(gè)問題。
3.Vista系統(tǒng)下將可執(zhí)行文件改名為setup.exe將會(huì)自動(dòng)以管理員的身份運(yùn)行。
總結(jié)
以上是生活随笔為你收集整理的用inno做setup遇到的一些问题及解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: July 4th Links: ASP.
- 下一篇: 每个开发人员现在应该下载的十种必备工具