Vista/Win7 UAC相容程式開發指南
轉自:http://blog.csdn.net/chenlycly/article/details/28959293?utm_source=tuicool&utm_medium=referral
一、UAC引入
什麼是UAC?
UAC的原理是什麼?
為什麼微軟要設計UAC?
UAC對我們開發應用程式有什麼影響?
要如何保證一個程式能夠在Vista和Win7下執行良好?
你能回答出以上的問題麼?如果不能,這篇案例將解答這些問題。
P.S.:與UAC相關的內容很多,本文只是對UAC進行了一個總結,力求讓各位通過這一篇文章,對UAC有大致的瞭解,並知道應該如何修改程式,以適應UAC。
我會盡量在文中標出參考資料的來源,以便大家更深入的探究。
儘管看起來,我們的應用程式似乎在Windows 7上執行良好,但它們真的符合微軟對Windows 7相容程式的要求了麼?其實未必。
Windows7和Vista一個很重大的改變就是,加入了使用者賬戶控制(UserAccount Control)功能,簡稱UAC。
二、UAC簡介
什麼是UAC?
UAC(User Account Control),中文翻譯為使用者帳戶控制,是微軟在WindowsVista和Windows7中引用的新技術,主要功能是進行一些會影響系統安全的操作時,會自動觸發UAC,使用者確認後才能執行。
更形象的解釋就是:在Vista和Windows 7中,不論你是是執行一個安裝程式或者開啟一個未經驗證的程式,甚至複製一個檔案到C盤,都會把桌面調暗並鎖定,然後彈出一個對話方塊,讓你確認操作的那個令人抓狂的東西。
圖1 許可權提升確認介面
相信很多人都和我一樣,裝完Windiows 7後,乾的第一件事就是跑去使用者賬戶設定裡把UAC關掉,Vista沒有流行起來,可能也有UAC的功勞。
既然大家都不喜歡UAC,微軟為什麼要設計出這樣一個東西砸自己的腳呢?
三、為什麼微軟要設計UAC?
大家都用過Windows XP,我相信絕大多數人在用Windows XP的時候,都使用的是管理員許可權的賬戶。而在微軟的設想中,普通使用者都應該使用標準賬戶(烏托邦一般的夢想)。
為什麼大家不用標準賬戶?Windows XP裡的標準賬戶,可能連程式都沒法正常安裝!沒有人願意為了裝個程式,切換到管理員賬戶,裝完了再切換回標準使用者。
當然,微軟也注意到了這點,於是就設計了UAC系統。UAC與Windows XP的使用者賬戶許可權管理,最大的不同在於,UAC對許可權的控制很有彈性。它預設所有程式都是以標準許可權執行的(無論你使用的是管理員賬戶還是標準賬戶),而當你執行一個需要管理員許可權的程式時,UAC就會跑出來問你,這個程式需要管理員許可權,要不要繼續?如果你允許,UAC就會提升許可權,用管理員許可權執行這個程式。
其實從UAC的設計的本意上來看,它即避免了直接使用管理員賬戶導致許可權控制形同虛設,又解決了標準使用者需要頻繁切換到管理員賬戶的問題(感覺是抄襲Linux的su許可權提升)。
但是,Vista下的UAC一點都不智慧,連複製檔案之類的操作,都會跑過來問你一下,很多使用者不厭其煩,直接把UAC一關了事。Windows 7的UAC則不同於Vista那個只有開啟和關閉兩種選項的UAC,Windows 7的UAC可以設定提示級別(有點類似IE的那個隱私設定)。
儘管Windows 7對UAC做了一些改變,但有的時候UAC還是很煩。比如,你第一次開啟一個需要管理員許可權的程式,UAC會盡忠職守的問你是否要提升許可權;你第二次開啟,UAC還會盡忠職守的問你是否要提升許可權;你第三次開啟,UAC還會盡忠職守的問你是否要提升許可權……於是你怒了,把UAC一關了之。
用過Android手機的使用者都知道,Android裡有個信任程式列表,一旦加入這個列表,再次執行的時候,系統就不會做多餘的詢問了。而UAC則沒有這種東西,因為微軟的人認為,如果要建立一個信任列表,那這個列表必然會被儲存在登錄檔或者硬碟的某個地方,這樣hacker就可以想辦法破解並修改這個列表了(就像XP的密碼一樣)。
Norton出了個小工具,可以建立信任列表:Norton UAC Tool
Win7的UAC配置介面
四、UAC的原理是什麼?
能夠觸發UAC的操作包括:
* 修改Windows Update配置;
* 增加或刪除使用者帳戶;
* 改變使用者的帳戶型別;
* 改變UAC設定;
* 安裝ActiveX;
* 安裝或解除安裝程式;
* 安裝裝置驅動程式;
* 修改和設定家長控制;
* 增加或修改登錄檔;
* 將檔案移動或複製到Program Files或是Windows目錄;
* 訪問其他使用者目錄
在Windows 7和Vista下,若開啟了UAC,所有程式都預設執行在標準許可權下。
除非以下三種情況:
1. 使用者手動選擇使用管理員許可權啟動
2. 在程式的manifest檔案或者內嵌的manifest資訊里加入“level=highestAvaible”或者“level requireAdministrator”安全級別。
3. UAC若檢測到程式為安裝程式(見下文安裝程式檢測)。
4. 在可執行檔案的屬性對話方塊、相容性標籤頁裡勾選“以管理員身份啟動該程式”複選框,等價於在
HKCU \Software\Microsoft\WindowsNT\CurrentVersion\AppCompatFlags\Layers登錄檔分支下新增鍵值,也相當於修改C:\Windows\AppPatch下的sysmain.sdb相容性資料庫。
5. 利用ACT(應用程式相容性工具)為特定應用程式建立相容性資料庫,以便IT部門可以方便地在企業裡部署相容性設定。
1、訪問令牌
UAC對許可權的控制,是通過訪問令牌來實現的。當用戶登入Windows時,系統會同市建立兩個訪問令牌,其中一個是完全的管理員訪問令牌,另一個是經過“過濾”的標準使用者訪問令牌。當Windows系統啟動Shell程序(Explorer.exe)時,LSA(LocalSecurityAuthor)會把標準使用者的訪問令牌連線到Shell程序。如果某個程序需要管理員許可權,則系統會提示許可權提升,得到使用者親自確認後,系統會把完全的管理員訪問令牌連線到該程序上。
在沒有明示的情況下,子程序一般都會繼承父程序的訪問令牌,而在Windows下,大多數程序都是由Explorer啟動的,因此,他們預設都只有標準使用者許可權。
2、安裝程式檢測
顧名思義,這個技術提供了對安裝程式的識別支援。在UAC環境下,某些傳統的安裝程式可能無法取得必須的許可權執行安裝,Windows提供了這樣一種技術,使得安裝或者升級程式會自動被系統識別,並在執行時自動提示使用者以管理員許可權執行安裝程式。
Installer Detection只作用於32位可執行程式、程式的Manifest內不包含requestedExecutionLevel元素、UAC環境下的以Standard User執行的互動式程序。
當32位程序建立後,會根據以下一些屬性判斷是否是一個安裝程式:
l. 檔名包含關鍵字:”install”, “setup”,”update”等等。
2. 在版本資源的以下欄位內包含關鍵字:廠商(Vendor)、公司名(CompanyName)、產品名(ProductName)、檔案說明(File Description)、初始檔名(Original Filename)、內部檔名(Internal Name)、匯出名(Export Name)。
3. 在可執行檔案的manifest內包含關鍵字。
4. 在連結到可執行檔案的特定StringTable中包含關鍵字
5. 連結到可執行檔案的資原始檔資料包含關鍵屬性。
6. 可執行檔案包含特定的位元組序列。(這一項應該是識別現在的各種安裝包格式的特徵)
安裝程式識別技術預設開啟,並且可以在安全管理器或者組管理器裡面修改設定。
3、使用者介面許可權隔離(UIPI)
使用者介面許可權隔離主要用來將高特權程序和低特權程序隔離開,防止低許可權程序向高許可權程序傳送訊息(SendMessage或PostMessage)、注入DLL、對高許可權程序使用執行緒鉤子、或用日誌鉤子監控高許可權程序。詳細可以參考《NewUAC Technologies for Windows Vista》一文。
UIPI阻止低許可權程序的如下行為:
1. 驗證高許可權程序的控制代碼的有效性
2. 呼叫SendMessage或者PostMessage傳送訊息到高許可權程序。如果這樣使用,函式會返回成功,但是傳送的訊息會被丟棄掉。
3. 使用執行緒鉤子(Threads hooks)附加到高許可權程序。
4. 使用日誌鉤子(Journal hooks)監控高許可權程序。
5. 對高許可權程序進行dll注入。
在UIPI有效的情況下,程序間的以下資源是可以跨許可權訪問的:
1. 前臺的Desktop window。
2. 桌面堆共享記憶體
3. 全域性的atom table
4. 剪貼簿
一些特殊Windows訊息是容許的。因為這些訊息對程序的安全性沒有太大影響。這些Windows訊息包括:
0x000 - WM_NULL
0x003 - WM_MOVE
0x005 - WM_SIZE
0x00D - WM_GETTEXT
0x00E - WM_GETTEXTLENGTH
0x033 - WM_GETHOTKEY
0x07F - WM_GETICON
0x305 - WM_RENDERFORMAT
0x308 - WM_DRAWCLIPBOARD
0x30D - WM_CHANGECBCHAIN
0x31A - WM_THEMECHANGED
0x313, 0x31B (WM_???)
4、UAC虛擬化技術(資料重定向)
對於早期開發的程式,可能沒有上述資訊告知UAC需要管理員許可權。為了保證它們能夠無需修改便在Vista/Windows 7下正常執行,UAC使用了虛擬化技術(也叫做資料重定向)。
一些早期開發的程式,習慣於將程式的資料及配置檔案儲存到程式的安裝目錄(如C:\ProgramFiles\PorgramName\),或者向HKLM/Software登錄檔下寫入資訊。此類程式執行在標準使用者下時,是沒有許可權向上述目錄和登錄檔寫入資訊的。但為何我們在使用這些早期的程式時,並沒有看到無法訪問目錄之類的提示?這全靠UAC的虛擬化技術。
所謂虛擬化技術,就是把標準使用者許可權下程式對 Windows 目錄、 Program Files目錄的寫入重定向到 %LocalAppData%\VirtualStore\Windows 、%LocalAppData%\VirtualStore\ProgramFiles ;把對 HKEY_LOCAL_MACHINE的寫入重定向到HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE 或HKEY_USERS\UserSID_Classes\VirtualStore\Machine 。
比如向C:\Program Files\Kedacom\資料夾下寫入的檔案,會被自動重定向到
C:\Users\ Username \AppData\Local\VirtualStore\ProgramFiles\Kedacom目錄。
這也就是為什麼有時,我們在標準使用者許可權下,用一個早期程式儲存了一些檔案到ProgramFiles下,沒有提示失敗,卻怎麼也找不到這些檔案。實際上,它們都被重定向到VirtualStore目錄下去了。
UAC的資料重定向是藉助一個檔案系統的篩選驅動程式(Filter Driver)來實現的,這個驅動的名字是luafv.sys,作為SYSTEM程序的執行緒在核心模式中載入。
通過微軟提供的工具Process Monitor可以監控到重定向的過程,詳細的步驟,可以參考相關資料中的《使用者帳戶控制資料重定向》一文。
注意:由於x64位程式大多在Vista之後設計,因此微軟在x64系統中,虛擬化功能預設是禁用的。
五、UAC對我們開發應用程式有什麼影響?
儘管似乎很多早期開發的程式無需修改,也能正常執行在Vista或者Windows 7下。但這大多有依賴於UAC的虛擬化技術。而有些程式,在開啟UAC的機器下,以標使用者準許可權執行,根本無法正常工作。
在案例庫看到一篇測試寫的案例,說某程式在UAC下執行不正常,最後得出的結論竟然是關閉UAC……這對客戶來說無疑是極不負責任的一種做法,UAC作為Vista/Windows 7安全系統中重要的一環,對防範病毒、木馬等惡意程式起到重要的作用。很多客戶,出於安全考慮,都會強制要求開啟UAC。
而微軟也明確指出:
Virtualization is intended only to assist inapplication compatibility with existing programs. Applications designed forWindows Vista should NOT perform writes to sensitive system areas, nor shouldthey rely on virtualization to provide redress for incorrect applicationbehavior. (虛擬化僅僅是為了保證對已有程式的相容性。為Vista設計的程式,不應向系統敏感區域寫入資料,也不應依賴UAC虛擬化技術矯正錯誤的行為。)
為了能夠讓程式相容Vista/Windows 7,我們需要對程式進行以下修改:
1、更改程式配置、資料檔案的儲存目錄。
在Vista之前,程式喜歡將配置檔案等資訊儲存在程式的安裝目錄下,如C:\Program Files\Kedacom\XXXX\中,但在Vista中,Program Files目錄需要管理員許可權才能寫入。因此,我們需要更改儲存配置、資料檔案的目錄。
無特殊必要的情況下,不要向Windows、Program Files資料夾下寫入檔案。
微軟推薦以下幾個目錄:
%ALLUSERSPROFILE% –所有使用者的共享程式資料目錄。
%LOCALAPPDATA% –Vista之後系統的每使用者的程式資料目錄(無法漫遊)。
%APPDATA% – Vista之後系統的每使用者的程式資料目錄(可漫遊)。
C++下可以通過SHGetKnownFolderPath函式獲取上述目錄(也可直接使用上述環境變數):
HRESULT SHGetKnownFolderPath(
_In_ REFKNOWNFOLDERID rfid,
_In_ DWORD dwFlags,
_In_opt_ HANDLE hToken,
_Out_ PWSTR *ppszPath
);
Rfid填入要獲取的資料夾資訊,可用下面三個引數:
FOLDERID_ProgramData– 所有使用者的共享程式資料目錄。
FOLDERID_LocalAppData– 每使用者的程式資料目錄(無法漫遊)。
FOLDERID_RoamingAppData– 每使用者的程式資料目錄(可漫遊)。
dwFlags一般可填0
hToken為Access Token的Handle,填NULL,則為當前使用者
ppszPath為返回的目錄的含結束符的字串,使用完後需呼叫CoTaskMemFree釋放。
這個函式更詳細的資訊可以查閱:
2、更改程式資訊寫入登錄檔的位置
在Vista之前,程式喜歡向HKEY_LOCAL_MACHINE\Software鍵值下寫入程式的配置資訊,但在Vista中,HKLM鍵需要有管理員許可權才能寫入。因此,推薦將使用者配置資訊儲存到HKEY_CURRENT_USERS鍵值下。當然,安裝程式因為預設以管理員許可權啟動,所以仍可以寫入HKLM。
3、為程式加入manifest檔案
Manifest用於告知作業系統程式的資訊,包括執行許可權,執行環境,介面風格等。
通過manifest,我們可以讓程式在啟動的時候自動提升許可權。
將下面的內容儲存為 YourProgramName .manifest,加入到資原始檔中,並保證資源ID為1。
<?xmlversion="1.0" encoding="UTF-8"standalone="yes"?>
<assemblyxmlns="urn:schemas-microsoft-com:asm.v1"manifestVersion="1.0">
<assemblyIdentityversion="1.0.0.0"
processorArchitecture="X86"
name="IsUserAdmin"
type="win32"/>
<description>Description of yourapplication</description>
<!-- Identify the application securityrequirements. -->
<trustInfoxmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
通過修改requestedExecutionLevel一行的level屬性,可以宣告程式所需的許可權。
<requestedExecutionLevel
level="asInvoker|highestAvailable|requireAdministrator"
uiAccess="true|false"/>
asInvoker表示與呼叫者相同,highestAvailable代表可獲取的最高許可權requireAdministrator代表管理員許可權。
除非程式的確需要在管理員許可權下執行,否則一般不推薦設定為highestAvailable和requireAdministrator,因為一旦設定了這兩個屬性,每次執行程式時,都會彈出許可權提升請求對話方塊,還是很煩人的。
注意:對於沒有manifest的32位程式,Windows將自動預設虛擬化,而含有manifest的程式,虛擬化是預設禁用的。
4、動態提升程式許可權
儘管我們可以在程式執行前,就設定程式的執行許可權,但大多數時候,我們的程式僅需標準使用者許可權,只有在執行特定操作的時候,才需要管理員許可權。
那麼有沒有什麼方法可以動態提升程式許可權呢?
方法有兩個:
1. 通過ShellExecuteEx函式建立一個高許可權程序。
首先要明確一點,一個程序是無法提升自己的許可權的,但是他可以建立一個管理員許可權程序。
BOOLShellExecuteEx(
_Inout_ SHELLEXECUTEINFO *pExecInfo
);
typedefstruct _SHELLEXECUTEINFO {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCTSTR lpVerb;
LPCTSTR lpFile;
LPCTSTR lpParameters;
LPCTSTR lpDirectory;
int nShow;
HINSTANCE hInstApp;
LPVOID lpIDList;
LPCTSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
union {
HANDLE hIcon;
HANDLE hMonitor;
} DUMMYUNIONNAME;
HANDLE hProcess;
}SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;
對於這個函式在此不多做說明,大家可以查詢MSDN獲取詳細用法。
提升許可權的關鍵在於lpVerb,填入”runas”,即可讓這個程序以管理員許可權執行(程序啟動時會彈出對話方塊要求使用者確認提升許可權)。
典型的用法:
SHELLEXECUTEINFOShExecInfo ={0};
相關推薦
Vista/Win7 UAC相容程式開發指南
轉自:http://blog.csdn.net/chenlycly/article/details/28959293?utm_source=tuicool&utm_medium=referral 一、UAC引入 什麼是UAC? UAC的原理是什麼? 為什
Python 3程式開發指南
1章 過程型程式設計快速入門 1 1.1 建立並執行Python程式 1 1.2 Python的關鍵要素 5 1.2.1 要素#1:資料型別 6 1.2.2 要素#2:物件引用 7 1.2.3 要素#3:組合資料型別 9 1.2.4 元素#4:邏輯操作符 12
分享一本關於Python的書籍 -----Python3程式開發指南(第二版)
Python崇尚優美、清晰、簡單,是一個優秀並廣泛使用的語言。它是Google的第三大開發語言,Dropbox的基礎語言,豆瓣的伺服器語言。能用來做桌面程式遊戲伺服器段程式、網站嵌入式、移動裝置都是跨平臺、跨虛擬機器的(支援,除了底層系統程式設計,Python幾
VxWorks驅動程式開發指南--驅動程式的組織結構
驅動程式的組織結構 驅動程式最重要的部分就是驅動程式原始碼檔案,原始檔描述了裝置如何和VxBus、VxWorks OS互動。但是,VxWorks 裝置驅動程式還需要另外一些檔案,這些附加檔案能夠幫助你將自己編寫的驅動整合到VxWorks編譯環境中去,這也是釋出驅動程式最重要的一步。本節主要討論如
微信小程式開發指南,介面文件,工具下載使用
相信前天,從事網際網路行業人的朋友圈給刷爆了,前微信公眾平臺開始陸續對外發送小程式內測邀請,而小程式即被外界廣為關注的微信“應用號”。 小程式的推出也並非一蹴而就,早在2016年1月的微信公開課上,微信之父張小龍就透露微信即將推出應用號。根據張小龍的描述,應用號的形態大致為
微信小程式開發指南
微信小程式入門指南 註冊 註冊需要注意瀏覽器相容問題,紅色的複選框在google瀏覽器是看不到的,360瀏覽器能顯示出來。 開發
《Python3程式開發指南(第二版)》第2章 資料型別 練習
1.修改程式print_unicode.py,以便使用者可以在命令列上輸入幾個單獨的單詞,並且只有在Unicode字元名包含使用者所指定的所有單詞時才打印相應列。 __author__ = 'Ibuki Suika' import sys import unicoded
Intel 免費贈送IA-32構架手冊和程式開發指南
前幾天剛買了於淵著的《自己動手寫作業系統》,準備假期學習。看到作者寫書的參考書裡有intel的那套開發人員指南。這套書內容豐富詳實,描述權威,是作業系統開發者和研究者不可多得的參考資料。告訴大家一個好訊息,intel正在送紙版的開發人員指南系列圖書,以前有一段時期送過,中斷了一些時候,現在又重新開放了,一共是
小程式開發指南之效能優化
作者:HerryLo 原文永久連結: https://github.com/AttemptWeb/Record... 將從程式碼層面和專案層面,聊一聊微信小程式的效能優化問題,希望有所幫助。也是自己最近的一個總結。(前置知識:微信小程式的檢視層是WebView支援,邏輯層是JSCore支援,邏輯層通過s
《Oracle PL/SQL開發指南》學習筆記1——Oracle PL/SQL程式開發概覽
本章內容: 1. PL/SQL的歷史和背景 2. Oracle開發架構 知識點: 1. SQL和PL/SQL的關係: The SQL language is the interface to the Oracle Database 12c database
微信小程式開發,如何優雅地相容
小程式的功能不斷的增加,但是舊版本的微信客戶端並不支援新功能,所以在使用這些新能力的時候需要做相容。 關於單個 API 如何相容,微信官方提供了相容文件,因此我們這裡不再贅述。下面主要討論在整個專案如何優雅地處理相容問題。 問題 如果在每處需要相容的地方都寫上一堆相
1.Win7遇到應用程式已停止工作,故障模組 ntdll.dll 開啟VS2012報錯故障模組名稱: ntdll.dll Arcengie+VS開發許可問題
問題1: <1>.Win7遇到應用程式已停止工作,故障模組 ntdll.dll <2>.開啟VS2012報錯故障模組名稱: ntdll.dll 解決辦法: 以管理員身份執行cmd,輸入sfc/scannow 問題2:VS2012
【小程式社群】小程式社群提供微信小程式和支付寶小程式相關的資訊、開發教程、開發指南、小程式DEMO等資源。小程式開發社群是國內微信小程式和支付寶小程式開發的領先社群,這裡有最新的功能、最全的DEMO、最多的教程和最
小程式社群 小程式社群提供微信小程式和支付寶小程式相關的資訊、開發教程、開發指南、小程式DEMO等資源。小程式開發社群是國內微信小程式和支付寶小程式開發的領先社群,這裡有最新的功能、最全的DEMO、最多的教程和最...
一本超越期待的 C++ 書——簡評《Boost程式庫完全開發指南:深入C++“準”標準庫》
賴勇浩(http://laiyonghao.com) 作為一個時不時要用一點 C++ 的程式設計師,我常常自嘲為斯德哥爾摩綜合症患者,用 Python 寫著懶散的程式碼時,會懷念以前編寫 C++ 程式碼的那種被虐感。但當真正要寫一些 C++ 程式碼的時候,又會懷念 Pytho
Boost程式庫完全開發指南--示例使用說明
1、b2工具構建程式 為了使用b2構建應用,需要在安裝Boost程式庫後再安裝b2程式。在Boost解壓縮後的根目錄下執行命令: $cd tools/build/ $./bootstrap.sh $sudo ./b2 install b2預設會被安裝到
boost------asio庫的使用1(Boost程式庫完全開發指南)讀書筆記
asio庫基於作業系統提供的非同步機制,採用前攝器設計模式(Proactor)實現了可移植的非同步(或者同步)IO操作,而且並不要求多執行緒和鎖定,有效地避免了多執行緒程式設計帶來的諸多有害副作用。 目前asio主要關注於網路通訊方面,使用大量的類和函式封裝了socket
微信小程式開發入門指南二
上篇文章我們已經一起成功建立了一個Hello World級別的微信小程式。 那麼這篇文章我們將詳細講解下這個例子中的相關程式碼部分。 程式碼構成 正如你所看到的,這個專案中生成了很多不同型別的檔案。 .json 字尾的 JSON 配置
嵌入式初學者學習嵌入式必看必看書籍列表,有電子檔的同學可以共享出來,謝謝 Linux基礎 1、《Linux與Unix Shell 程式設計指南》 2、《嵌入式Linux應用程式開發詳解》
嵌入式初學者參考書目 無論學習哪方面的程式設計,都需要掌握基礎知識和程式語言,其中《深入理解計算機作業系統》是比較重要的。下面是一些計算機關於嵌入式方面的推薦,有些是借鑑他人的歸納。 Linux基礎 1、《Linux與Unix Shell 程式設計指南》 2、《嵌入式Linux應用程式開發詳
微信小程式:支付系列合集(開發指南+精品Demo)
小程式支付指南: 微信小程式與php 實現微信支付 | 連結 微信小程式---設計支付密碼的輸入框| 連結 e玩轉小程式支付之付款(統一下單)| 連結 小程式支付詳解+原始碼(客戶端+服務端) | 連結 【小白專用】微信小程式支付,微信支付| 連結 微信小程式支付功能 C# .NET開發
微信小程式:支付系列專輯(開發指南+精品Demo)
微信小程式聯盟出品 微信小程式支付指南:http://www.jianshu.com/p/2b63c81ec7f5 微信小程式與php 實現微信支付 | 連結 微信小程式---設計支付密碼的輸入框| 連結 e玩轉小程式支付之付款(統一下單)| 連結 微信小程式支付詳