Chúng tôi có một ứng dụng không được quản lý C++ xuất hiện gây ra lời nhắc UAC. Điều này dường như xảy ra trên Win7 và NOT trên VistaTrợ giúp với sự hiểu biết tại sao hộp thoại UAC bật lên trên Win7 cho ứng dụng của chúng tôi
Thật không may là UAC dlg là phương thức hệ thống nên tôi không thể đính kèm trình gỡ lỗi để kiểm tra mã của nó và chạy dưới msdev (chúng tôi đang sử dụng 2008) chạy ở chế độ cao.
Chúng tôi đặt một hộp thông báo ở đầu chương trình/winmain của chúng tôi nhưng nó thậm chí không nhận được điều đó đến nay, vì vậy rõ ràng đây là trong mã khởi động.
Điều gì có thể gây ra thông báo UAC quá sớm và tôi có thể làm gì khác để theo dõi nguyên nhân?
EDIT
Rõ ràng biểu hiện là một vấn đề quan trọng ở đây, nhưng có vẻ như không được giúp đỡ tôi - hoặc có lẽ tôi không cấu hình file manifest một cách chính xác.
Ai đó có thể cung cấp tệp kê khai mẫu không?
Ngoài ra, ma thuật liên kết/UAC có nhận ra rằng chương trình "có thể" ghi vào sổ đăng ký và đặt các yêu cầu UAC của nó dựa trên đó không? Có những đường dẫn mã có thể kích hoạt UAC, nhưng chúng tôi thậm chí không ở điểm đó khi UAC dlg xuất hiện.
Một điều kỳ lạ khác là điều này dường như không xảy ra trên Vista với UAC được bật.
Dưới đây là một biểu hiện (mà tôi nghĩ là/được tạo tự động):
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*' />
</dependentAssembly>
</dependency>
</assembly>
Và rồi một này đã được bổ sung vào danh sách manifest để xem nếu nó sẽ giúp
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="x86"
name="[removed for anonymity]"
type="win32"
/>
<description>
[removed for anonymity]
</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Các sau đây là từ EXE thực tế bằng cách sử dụng công cụ ManifestViewer
- <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="x86" name="[removed]" type="win32" />
<description>[removed]</description>
- <dependency>
- <dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
- <dependency>
- <dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
- <security>
- <requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Dường như nó có thể b e do cài đặt tương thích xp trên ứng dụng của chúng tôi. Tôi sẽ phải kiểm tra điều đó. (chúng tôi đã cài đặt trình cài đặt này vì một số trình điều khiển âm thanh không hoạt động chính xác trên win7)
Bắt đầu bằng cách kiểm tra cài đặt UAC trên máy của bạn để xem mức độ nào kích hoạt lời nhắc. Điều này sẽ giúp thu hẹp mà có thể gây ra nó. –
@AdamW - Bất kỳ cài đặt nào bên dưới quản trị viên đều làm điều này tôi nghĩ. Trong mọi trường hợp, chúng tôi không muốn các thông báo - và chúng tôi đang cố khắc phục vấn đề, nhưng khi hộp dlg là phương thức (nhờ MS) và không thể sao chép dưới trình gỡ rối và chúng tôi thậm chí không thể "gỡ lỗi" bằng cách sử dụng các hộp tin nhắn, chúng tôi đang bị mất để chẩn đoán hoặc sửa lỗi ... – Tim
@gf - cảm ơn bạn đã chỉnh sửa. – Tim