dmose%mozilla.org 0efb7c174c updated xPL license boilerplate to v1.1, a=chofmann@netscape.com,r=endico@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@52910 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-06 03:43:54 +00:00

123 lines
4.2 KiB
Java

/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
package netscape.softupdate;
import netscape.security.UserTarget;
import netscape.security.PrivilegeManager;
import netscape.security.Principal;
import netscape.security.Target;
import netscape.security.UserDialogHelper;
final class WinProfile {
private String filename;
private SoftwareUpdate su;
private Principal principal;
private PrivilegeManager privMgr;
private Target impersonation;
private UserTarget target;
// static final String INI_TARGET = "WindowsIniFile";
// /* create the target */
// static {
// target = new ParameterizedTarget(
// INI_TARGET,
// PrivilegeManager.getSystemPrincipal(),
// UserDialogHelper.targetRiskMedium(),
// UserDialogHelper.targetRiskColorMedium(),
// Strings.targetDesc_WinIni(),
// Strings.targetUrl_WinIni() );
// target = (ParameterizedTarget)target.registerTarget();
// };
WinProfile( SoftwareUpdate suObj, FolderSpec folder, String file )
throws SoftUpdateException
{
filename = folder.MakeFullPath( file );
su = suObj;
principal = suObj.GetPrincipal();
privMgr = PrivilegeManager.getPrivilegeManager();
impersonation = Target.findTarget( SoftwareUpdate.IMPERSONATOR );
target = (UserTarget)Target.findTarget( SoftwareUpdate.INSTALL_PRIV );
}
/**
* Schedules a write into a windows "ini" file. "Value" can be
* null to delete the value, but we don't support deleting an entire
* section via a null "key". The actual write takes place during
* SoftwareUpdate.FinalizeInstall();
*
* @return false for failure, true for success
*/
public boolean writeString( String section, String key, String value ) {
boolean result;
WinProfileItem item;
try {
privMgr.enablePrivilege( impersonation );
privMgr.enablePrivilege( target, principal );
item = new WinProfileItem( this, section, key, value );
su.ScheduleForInstall( item );
result = true;
}
catch ( Exception e ) {
e.printStackTrace( System.out );
result = false;
}
return result;
}
/**
* Reads a value from a windows "ini" file. We don't support using
* a null "key" to return a list of keys--you have to know what you want
*
* @return String value from INI, "" if not found, null if error
*/
public String getString( String section, String key ) {
String result;
try {
privMgr.enablePrivilege( impersonation );
privMgr.enablePrivilege( target, principal );
return nativeGetString( section, key );
}
catch ( Exception e ) {
e.printStackTrace( System.out );
result = null;
}
return result;
}
protected String filename() { return filename; }
protected SoftwareUpdate softUpdate() { return su; }
protected int finalWriteString( String section, String key, String value ) {
// do we need another security check here?
return nativeWriteString( section, key, value );
}
private native int nativeWriteString( String section, String key, String value );
private native String nativeGetString( String section, String key );
}