Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: làm sao để chương trình build ra phải chạy bằng quyền admin.

  1. #1
    Ngày gia nhập
    04 2011
    Bài viết
    15

    Question làm sao để chương trình build ra phải chạy bằng quyền admin.

    Mình có làm 1 chương trình bằng ngôn ngữ C (viết trên Borland C++ 5.02)
    Khổ cái là khi build ra rồi muốn chạy đúng như ý muốn thì phải chạy nó bằng quyền admin. Với mình thì biết rõ điều này và chỉ cần thực thi chương trình đó bằng cách "Run as admin..." là ok, nhưng vì nhiều người thậm chí chưa khi nào có "khái niệm" tự tay "Run as admin..." nên mình muốn là khi chạy chương trình đó thì nó sẽ hỏi người dùng có xác nhận dùng quyền admin để mở chạy hay ko (có cái bảng UAC gì đó trong win7 hay hiện lên đó..).

    Mình đã thử vào "properties" để thay đổi cách chạy file = quyền admin nhưng khi copy sang máy khác thì thay đổi đó lại vô tác dụng, vẫn chạy bình thường mà ko có nhắc nhở quyền admin gì hết.

    giờ mình phải làm sao để chương trình build ra phải chạy bằng quyền admin trên các máy vậy?? mong đc sớm chỉ giáo
    *****

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình ko rõ BC có hỗ trợ manifest ko, nhưng bạn muốn làm như thế thì buộc phải sửa manifest của ứng dụng. Nếu BC ko hỗ trợ thì bạn dùng tool ngoài như resource hacker, sửa manifest lại ( resource type là 24 ). Nội dung của manifest như sau :
    PHP Code:
    <?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" name="MyApplication.app"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="true"/>
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    09 2008
    Bài viết
    223

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Mình ko rõ BC có hỗ trợ manifest ko, nhưng bạn muốn làm như thế thì buộc phải sửa manifest của ứng dụng. Nếu BC ko hỗ trợ thì bạn dùng tool ngoài như resource hacker, sửa manifest lại ( resource type là 24 ). Nội dung của manifest như sau :
    PHP Code:
    <?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" name="MyApplication.app"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="true"/>
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>
    Với BC. Copy nội dung như của meoconlongvang ở trên lưu vào 1 file rồi đặt tên là TenUngDung.exe.manifest và để cùng thư mục với file .exe của bạn khi chạy
    Ân oán giang hồ nuôi tôi lớn
    Cuộc đời khốn nạn dạy tôi khôn
    Không đâm không chém đời không nể
    Không tiền không bạc gái không theo

    ----------------------
    Visit my blog: http://nova-soft.net/

  4. #4
    Ngày gia nhập
    04 2011
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Mình ko rõ BC có hỗ trợ manifest ko, nhưng bạn muốn làm như thế thì buộc phải sửa manifest của ứng dụng. Nếu BC ko hỗ trợ thì bạn dùng tool ngoài như resource hacker, sửa manifest lại ( resource type là 24 ). Nội dung của manifest như sau :
    PHP Code:
    <?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" name="MyApplication.app"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="true"/>
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>
    Trích dẫn Nguyên bản được gửi bởi gianghoplus Xem bài viết
    Với BC. Copy nội dung như của meoconlongvang ở trên lưu vào 1 file rồi đặt tên là TenUngDung.exe.manifest và để cùng thư mục với file .exe của bạn khi chạy
    mình làm theo hai bạn và đã thành công, nhưng có lẽ mới 1 nửa. do khi copy file đó (file này có hình cái khiên, khi chạy cần quyền admin) sang một thư mục khác thì file copy từ file gốc ko còn hình cái khiên nữa và bấm vào thì ko hỏi quyền admin gì hết mà đã chạy như sấm .
    giờ làm làm sao khắc phục nốt cái này đây mấy bạn??
    *****

  5. #5
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi lehong3000 Xem bài viết
    mình làm theo hai bạn và đã thành công, nhưng có lẽ mới 1 nửa. do khi copy file đó (file này có hình cái khiên, khi chạy cần quyền admin) sang một thư mục khác thì file copy từ file gốc ko còn hình cái khiên nữa và bấm vào thì ko hỏi quyền admin gì hết mà đã chạy như sấm .
    giờ làm làm sao khắc phục nốt cái này đây mấy bạn??
    Mình đã đưa ra cách 2 là dùng tool như resource hacker nhúng manifest thẳng vào file exe luôn, như thế vác file exe đi đâu cũng ko sợ. Nếu để file manifest ở ngoài thì copy qua đâu cũng phải copy 1 cặp 2 file, rất phiền hà.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  6. #6
    Ngày gia nhập
    04 2011
    Bài viết
    15

    Mặc định làm sao để chương trình build ra phải chạy bằng quyền admin.

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Mình đã đưa ra cách 2 là dùng tool như resource hacker nhúng manifest thẳng vào file exe luôn, như thế vác file exe đi đâu cũng ko sợ. Nếu để file manifest ở ngoài thì copy qua đâu cũng phải copy 1 cặp 2 file, rất phiền hà.
    hic hic, nhưng mà resource hacker không "hacker" được resource của chương trình viết bằng C++ trên BC 5.02 bạn ui.
    mình đã thử mà nó ko đọc đc resource của file chứ đừng nói là sửa
    *****

  7. #7
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Nhiều khả năng là BC biên dịch chương trình của bạn dạng 16 bit. Nếu vậy thì phải kiếm chương trình nào cho phép edit resource dạng 16 bit ( cái này mình kiếm ko ra, 16 bit giở cổ lắm rồi ). Còn ko thì buộc phải xách exe và manifest đi chung với nhau thôi.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  8. #8
    Ngày gia nhập
    04 2011
    Bài viết
    15

    Có một giải pháp là tạo 1 project. =>
    tạo file *.rc có nội dung:
    Code:
    	#define RT_MANIFEST 24
    	#define APP_MANIFEST 1
    
    	APP_MANIFEST RT_MANIFEST *.exe.manifest
    Tạo file *.exe.manifest có nội dung:
    Code:
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity version="1.0.0.0" name="*.app"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>
    ==> chương trình build ra nó thỏa mãn yêu cầu của mình [ĐỌC TIẾP HẾT ĐI NHA, CHỈ MỚI THỎA MÃN YÊU CẦU VỀ CÁI UAC THÔI => vấn đề chưa đc giải quyết]. (lưu ý là mình thử copy file .rc trên vào cùng thư mục chương trình để buil thì ko có tác dụng -> mình nghĩ phải tạo project)

    Nhưng vấn đề lại là mình ko biết tạo 1 project (đúng, chạy đc,..) trên Borland C.
    Trên Borland C khi tạo project theo mặc định thì nó sẽ tạo cho mình 3 file:
    .cpp - cái này thì mình biết
    .rc - cái này cũng biết
    .def - cái này thì mình ko biết ( gà quá ^^ )

    Giờ mình code chương trình chính của mình trên file .cpp
    Cái file .rc thì cấu hình như trên
    Còn cái file .def mình ko biết làm gì nên
    1. Đã xóa:

    => build (OK - thành công, không báo lỗi gì hết) => chạy chương trình (báo lỗi, ko chạy đc )
    Và cái đặc biệt ở đây lại là cái file .exe đc build ra. nó hoàn toàn thỏa mãn yêu cầu của mình về cái UAC (chỉ khổ là ko chạy đc).
    Và cụ thể nó báo lỗi này:


    2. Để nguyên:

    => build -> báo lỗi không thể mở đc file .def đó

    Thế đấy. Giờ mình muôn hỏi về thông tin cái file .def này và phải làm gì với nó để chương trình chạy bình thường đây?
    Trong cái trường hợp 1 là do lỗi do xóa file .def hay là do lỗi dùng project của mình bị sai chỗ nào?
    Đã được chỉnh sửa lần cuối bởi lehong3000 : 18-12-2011 lúc 12:30 AM.
    *****

Các đề tài tương tự

  1. Chạy ứng dụng dưới quyền admin bằng cách nào?
    Gửi bởi MrVietA2 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 18-11-2011, 09:42 AM
  2. Trả lời: 2
    Bài viết cuối: 26-09-2011, 09:55 AM
  3. Cách để chương trình yêu cầu quyền admin khi mở
    Gửi bởi dehin trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 7
    Bài viết cuối: 19-04-2011, 07:26 PM
  4. ADO.NET Kiểm tra admin user và phân quyền
    Gửi bởi shockgun trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 30-03-2011, 11:55 PM
  5. VS 2008 Chạy Debug Quyền admin ?
    Gửi bởi honey trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 25-09-2010, 02:38 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn